Blog

2

Pemilihan Koneksi Data Blackberry Secara Otomatis

Dalam mengembangkan aplikasi Java (J2ME) yang membutuhkan koneksi data (internet) pada platform blackberry, terdapat penambahan sufiks pada URL-nya dimana hal ini tidak terdapat pada platform yang lain. Penambahan sufiks ini bertujuan untuk memberitahukan kepada sistem jalur / konfigurasi koneksi data yang akan dipakai. Adapun sufiks-sufiks tersebut seperti :

  1. http://[domain/alamatIP]{/sub_path};interface=wifi : Koneksi data yang dipakai adalah WiFi
  2. http://[domain/alamatIP]{/sub_path};deviceside=false : Koneksi data yang dipakai adalah melalui BES (Blackberry Enterprise Server)
  3. http://[domain/alamatIP]{/sub_path};deviceside=false;ConnectionType=mds-public : Koneksi data yang dipakai adalah melalui BIS (Blackberry Internet Service)
  4. http://[domain/alamatIP]{/sub_path};deviceside=true;apn=<apn_name> : Koneksi data yang dipakai adalah TCP (direct connection) dimana terdapat opsional parameter user authentication untuk APN (Access Point Name) terkait jika dibutuhkan (;tunnelauthusername=<username>;tunnelauthpassword=<password>)
  5. Sufiks konfigurasi yang lain dapat dilihat di dokumentasi API Blackberry.

Untuk menangani pemakaian jalur koneksi data tersebut terdapat dua cara yaitu secara manual, baik itu hard-coded maupun penyediaan fasilitas pemilihan koneksi pada aplikasi (misalnya berupa layar/dialog pengaturan), serta secara otomatis yaitu aplikasi menentukan sendiri koneksi data yang akan dipakai berdasarkan koneksi data yang tersedia pada saat runtime dengan prioritas tertentu. Pemilihan koneksi data secara otomatis oleh aplikasi tentu akan memberikan kemudahan bagi pemakai aplikasi nantinya dimana tidak dibingungkan oleh pengaturan-pengaturan koneksi data yang mungkin tidak dimengerti oleh pengguna awam.

Untuk mewujudkan hal tersebut maka terlebih dahulu kita mengimplementasikan fungsi untuk mengenali dan memeriksa ketersediaan koneksi-koneksi data yang ada pada perangkat blackberry. Yang pertama adalah fungsi untuk mengenali dan memeriksa koneksi WiFi, dimana terdapat 2 implementasi fungsi, yaitu fungsi untuk memeriksa apakah perangkat WiFi tersedia serta fungsi untuk memeriksa apakah ada koneksi WiFi yang aktif. Berikut implementasi fungsinya :

[sourcecode language="java"]
public static boolean isWifiAvailable()
// cek apakah ada koneksi wifi tersedia
{
return RadioInfo.areWAFsSupported(RadioInfo.WAF_WLAN);
}
public static boolean isWifiActive()
// cek apakah koneksi wifi aktif
{
return (RadioInfo.getActiveWAFs() >= RadioInfo.WAF_WLAN);
}
[/sourcecode]

Kemudian fungsi untuk memeriksa apakah data bearer dalam kondisi offline. Fungsi ini nantinya digunakan untuk menentukan penggunaan koneksi data melalui BES maupun BIS dimana kedua koneksi tersebut dapat digunakan jika data bearer tidak offline. Adapun implementasi fungsinya adalah sebagai berikut :

[sourcecode language="java"]
public static boolean isDataBearerOffline() {
return RadioInfo.getState()==RadioInfo.STATE_OFF ||
RadioInfo.getSignalLevel() == RadioInfo.LEVEL_NO_COVERAGE;
}
[/sourcecode]

Fungsi pengenalan koneksi terakhir adalah untuk memeriksa apakah koneksi melalui BIS tersedia. Hal ini dilakukan dengan melakukan iterasi pada IPPP service book untuk memeriksa apakah terdapat koneksi BIS. Adapun implementasi fungsinya adalah sebagai berikut :

[sourcecode language="java"]
public static boolean isBISAvailable()
{
boolean _bisSupport = false;
// Iterasi IPPP service-book (merepresentasikan jalur data untuk MDS dan BIS-B)
ServiceBook sb = ServiceBook.getSB();
ServiceRecord[] records = sb.findRecordsByCid( "IPPP" );
if( records == null ) {
return _bisSupport;
}
int numRecords = records.length;
for( int i = 0; i < numRecords; i++ ) {
ServiceRecord myRecord = records[i];
if( myRecord.isValid() && !myRecord.isDisabled() ) {
// Cek apakah myRecord merupakan BIS
int encryptionMode = myRecord.getEncryptionMode();
if( encryptionMode == ServiceRecord.ENCRYPT_RIM ) {
} else {
_bisSupport = true;
}
}
}
return _bisSupport;
}
[/sourcecode]

Setelah kita mengimplementasikan fungsi-fungsi yang menangani pemeriksaan ketersediaan koneksi-koneksi data pada Blackberry, maka terakhir adalah membuat fungsi untuk menentukan sufiks URL yang akan digunakan. Pada fungsi ini juga diterapkan urutan prioritas koneksi data yang akan digunakan sehingga sebenarnya implementasi fungsi ini berbeda-beda dimana bersesuaian dengan kebutuhan aplikasi / pembuat aplikasi. Adapun implementasi fungsi ini adalah sebagai berikut :

[sourcecode language="java"]
public static String DeviceConnectionExtension()
// Penentuan Sufiks URL
{
// 1. SIMULATOR
if(DeviceInfo.isSimulator()) {
return "";
}
// 2. WiFi
if (isWifiActive() && isWifiAvailable()) {
return ";interface=wifi";
}
// 3. BIS
if (!isDataBearerOffline() && isBISAvailable()) {
return ";deviceside=false;ConnectionType=mds-public";
}
// 4. BES
if (!isDataBearerOffline()) {
return ";deviceside=false";
}
// 5. TCP (asumsi nama APN : something)
return ";deviceside=true;apn=something";
}
[/sourcecode]

Fungsi terakhir digunakan saat memberikan parameter URL pada objek HttpConnection, seperti yang dicontohkan pada cuplikan kode di bawah ini :

[sourcecode language="java"]
HttpConnection conn = null;
OutputStream out = null;
try
{
conn = (HttpConnection) Connector.open(url + DeviceConnectionExtension());
if (postData == null) {
conn.setRequestMethod(HttpConnection.GET);
} else {
// …. dan seterusnya
[/sourcecode]

Dengan demikian maka penentuan koneksi data pada akhirnya akan otomatis ditentukan saat aplikasi berjalan (runtime) tanpa membutuhkan peran serta pengguna aplikasi dalam menentukannya.

Comments

  • firman
    February 15, 2011

    bagus bangat artikelnya..ditunggu share artikel programming bb yang lain..

    Reply
  • welsen
    March 22, 2011

    Permisi, pingin bertanya…
    Di indonesia kan terdapat fasilitas2 penggunaan Blackberry seperti pada provider XL dgn nama BB Gaul, dimana data koneksi internet dibatasi…
    Hal ini menyebabkan ketika mengakses menggunakan HTTPConnection, aplikasi akan hang… apakah anda punya saran untuk mencegah hal tersebut?

    Reply

Leave a Reply

Your email is never published nor shared. Required fields are marked *

*

© Copyright PT Javan Cipta Solusi 2012. All rights reserved.