13 Desember 2010

Membuat Contact List J2ME

PIM (Personal Information Management), merupakan type application yang berfungsi sebagai personal informasi pada handphone. PIM terbagi beberapa macam : 

1.PIM yang di gunakan untuk mengakses Browser.
2.PIM yang di gunakan untuk mengakses Contact.
3.PIM yang di gunakan untuk mengakses Event Calender.
4.PIM yang di gunakan untuk mengakses ToDo list (task information).

Untuk mengakses PIM kita membutuhkan lib JSR-75.  JSR-75 di sediakan untuk melakukan akses data-data pada handphone. 

Perangkat yang di gunakan untuk mengakses PIM adalah Netbeans, JDK Java, JSR-75. JSR-75 sudah tersedia pada netbeans sehingga kita tidak perlu repot-repot mencari-cari library JSR-75.

Pada tutorial kali ini saya tidak menjelaskan secara rinci tentang pembuatan contact list menggunakan J2ME. Namun saya akan menjelaskan methode yang di gunakan untuk mengakses Address Book pada handphone. Informasinya sudah tersedia pada dokumentasi jsr-75 nya anda dapat mendownload dokumentasinya di sini.

Yang perlu anda ketahui tentang PIM yang anda buat adalah :


  1. Contact – This Interface represents a single contact on the Address Book.
  2. ContactList – This Interface represents Address Book which is a list of Contacts.
  3. Event – This Interface represents a single Calendar Event.
  4. EventList – This Interface represents a list of Calendar events.
  5. ToDo – This Interface represents a single Task in the Task List.
  6. ToDoList – This Interface represents the Task list.

Contact List di gunakan untuk meakses Contact (Address Book) pada handphone. Sehingga anda membutuhkan Class Contact dan ContactList. Class ini lah yang di gunakan untuk melakukan koneksi denggan data-data address book di handphone dan melakukan operasinya. Berikut ini adalah methonde fillcList() yang di gunakan untuk menakses (menampilkan) data-data pada addressbook.
Sebelumnya data di simpan pada Vector. Saya menyimpan data pada vektor sebagai tempat penyimpanan data sementara selama program running.
private void fillcList() {
        list.deleteAll();
        try {
            System.out.println("Opening c list ...");
            String[] listc = PIM.getInstance().listPIMLists(PIM.CONTACT_LIST);
            for (int i = 0; i < listc.length; i++) {
                cList = (ContactList) PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.READ_WRITE);
            }
            System.out.print(cList.toString());
        } catch (PIMException ex) {
            System.out.println(ex.toString());
            return;
        }

        try {
            System.out.println("Getting c list items...");
            cItems = cList.items();
        } catch (PIMException ex) {
            releasecList();
            System.out.println(ex.toString());
            return;
        }

        // Checking c count
        if (!cItems.hasMoreElements()) {
            System.out.println("c list is empty!");
        }
        if (list.size() > 0) {
            list.deleteAll();
        }
        while (cItems.hasMoreElements()) {
            c = (Contact) cItems.nextElement();
            try {
                String tlpn = c.getString(Contact.TEL, Contact.ATTR_NONE);
                String[] nama = c.getStringArray(Contact.NAME, Contact.ATTR_NONE);

                list.append(nama[Contact.NAME_FAMILY] + " " + nama[Contact.NAME_GIVEN], null);

                vc.addElement(c);
            } catch (Exception ex) {
                System.out.println(ex.getMessage());
                continue;
            }
        }
    }

    private void releasecList() {
        if (cList != null) {
            try {
                System.out.println("Closing c list");
                cList.close();
            } catch (PIMException ex) {
                System.out.println(ex.toString());
            }
        }
        cList = null;
    }
methode fillcList() di gunakan untuk menampilkan data dari address book handphone.
code di bawah ini di gunakan untuk membbuka koneksi contact list. hak aksesnya dapat di atur. untuk code di bawah ini address book (contact list) di beri akses penuh ya itu read and write.
cList = (ContactList) PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.READ_WRITE);

berikutnya code dibawah ini di gunakan untuk mengakses data pada address book. Dibawah ini data yang diakses adalah nama dan no telpn. anda dapat menambahkan informasi lain berdasarkan dokumentasi dari JSR-75.
String tlpn = c.getString(Contact.TEL, Contact.ATTR_NONE);
String[] nama = c.getStringArray(Contact.NAME, Contact.ATTR_NONE);
Selesai kita menampilkan data pada contact list kita pun dapat melakukan delete pada contact list. Methode yang di gunakan adalah deleteContact(int itemIndex)
private void deleteContact(int itemIndex) {
        Contact cont = (Contact) vc.elementAt(itemIndex);
        try {
            System.out.println("Removing event...");
            cList.removeContact(cont);
        } catch (PIMException ex) {
            System.out.println(ex.toString());
        }
    }
untuk menghapus contact kita cukup menggunakan cList.removeContact(count);. Karena saya sebelumnya menggunakan vektor untuk menyimpan data sementara, Maka saya mengakses informasi data menggunakan vektor sebagai query data yang akan di delete.

Selanjutnya kita akan melakukan menambahkan data Address Book dengan cara menambahkan methode save(). Gunakan code berikut untuk melakukan penambahan data pada Address Book handphone.
public void save() {
        try {

            Contact cont = cList.createContact();
            String[] name = new String[cList.stringArraySize(Contact.NAME)];
            if (cList.isSupportedArrayElement(
                    Contact.NAME, Contact.NAME_FAMILY)) {
                name[Contact.NAME_FAMILY] = textField3.getString();
            }
            if (cList.isSupportedArrayElement(
                    Contact.NAME, Contact.NAME_GIVEN)) {
                name[Contact.NAME_GIVEN] = textField4.getString();
            }
            if (cList.isSupportedField(Contact.NAME)) {
                cont.addStringArray(Contact.NAME, PIMItem.ATTR_NONE, name);
            }
            if (cList.isSupportedField(Contact.TEL)) {
                cont.addString(Contact.TEL, Contact.ATTR_HOME,
                        textField5.getString());
            }
            cont.commit();
        } catch (PIMException e) {
            System.out.println(e.getMessage());
        }
    }
Untuk menambahkan data kita melakukannya dengan methode cont.commit() cont merupakan deklarasi dari class Contact cont = cList.createContact(). Sebelum anda menjalankan cont.commit() anda harus mengecek dulu apakah data yang di tambahkan itu mendukung dengan data yang ada pada Address Book.

SEKIAN Tutorial Semoga Membantu