Ada kalanya sebagai seorang developer, kita memperoleh proyek untuk mengembangkan aplikasi dimana aplikasi tersebut hanya tersedia eksklusif bagi pelanggan operator selular tertentu. Bagaimanakah caranya untuk mendeteksi operator selular yang sedang digunakan oleh user? Salah satu solusinya adalah melalui MCC (Mobile Country Code) dan MNC (Mobile Network Code) dari jaringan seluler yang aktif. MNC digunakan dalam kombinasi dengan MCC untuk mengidentifikasi operator selular secara unik.
Berdasarkan data dari Wikipedia, berikut ada MCC dan MNC untuk operator seluler yang ada di Indonesia.
|
MCC |
MNC |
Brand |
Operator |
| 510 | 0 | PSN | PT Pasifik Satelit Nusantara (ACeS) |
| 510 | 1 | INDOSAT | PT Indonesian Satellite Corporation Tbk (INDOSAT) |
| 510 | 3 | StarOne | PT Indosat Tbk |
| 510 | 7 | TelkomFlexi | PT Telkom |
| 510 | 8 | AXIS | PT Natrindo Telepon Seluler |
| 510 | 9 | SMART | PT Smart Telecom |
| 510 | 10 | Telkomsel | PT Telekomunikasi Selular |
| 510 | 11 | XL | PT XL Axiata Tbk |
| 510 | 20 | TELKOMMobile | PT Telkom Indonesia Tbk |
| 510 | 21 | IM3 | PT Indonesian Satellite Corporation Tbk (INDOSAT) |
| 510 | 27 | Ceria | PT Sampoerna Telekomunikasi Indonesia |
| 510 | 28 | Fren/Hepi | PT Mobile-8 Telecom |
| 510 | 89 | 3 | PT Hutchison CP Telecommunications |
| 510 | 99 | Esia | PT Bakrie Telecom |
Beberapa method pada Java ME yang dapat digunakan untuk memperoleh MCC dan MNC adalah sebagai berikut:
public String getIMSI() {
String out = "";
try {
out = System.getProperty("IMSI");
if (out == null || out.equals("null") || out.equals("")) {
out = System.getProperty("phone.imsi");
}
if (out == null || out.equals("null") || out.equals("")) {
out = System.getProperty("com.nokia.mid.mobinfo.IMSI");
}
if (out == null || out.equals("null") || out.equals("")) {
out = System.getProperty("com.nokia.mid.imsi");
}
if (out == null || out.equals("null") || out.equals("")) {
out = System.getProperty("IMSI");
}
if (out == null || out.equals("null") || out.equals("")) {
out = System.getProperty("imsi");
}
} catch (Exception e) {
return out == null ? e.getMessage() : out;
}
return out == null ? "empty" : out;
}
public String getMCC() {
String out = "";
try {
if (out == null || out.equals("null") || out.equals("")) {
out = System.getProperty("phone.mcc");
}
if (out == null || out.equals("null") || out.equals("")) {
if (out == null || out.equals("null") || out.equals("")) {
out = System.getProperty("com.sonyericsson.net.mcc");
}
}
if (out == null || out.equals("null") || out.equals("")) {
out = getIMSI().equals("") ? "" : getIMSI().substring(0, 3);
}
if (out == null || out.equals("null") || out.equals(""))
{
if (out == null || out.equals("null") || out.equals("")) {
out = System.getProperty("mcc");
}
}
} catch (Exception e) {
return out == null ? e.getMessage() : out;
}
return out == null ? "empty" : out;
}
public String getMNC(){
String out = "";
try{
if(out== null ||out.equals("null")|| out.equals(""))
out = System.getProperty("com.nokia.mid.mnc");
if(out== null ||out.equals("null")|| out.equals(""))
out = System.getProperty("phone.mnc") ;
if(out== null ||out.equals("null")|| out.equals(""))
out = getIMSI().equals("")?"": getIMSI().substring(3,5);
if(out== null ||out.equals("null")|| out.equals(""))
out = System.getProperty("com.sonyericsson.net.mnc");
if(out== null ||out.equals("null")|| out.equals("")){
out = getIMSI().equals("")?"": getIMSI().substring(3,5);
}
if(out== null ||out.equals("null")|| out.equals(""))
out = System.getProperty("com.samsung.imei");
if(out== null ||out.equals("null")|| out.equals(""))
out = System.getProperty("mnc");
}catch(Exception e){
return out == null ? e.getMessage() : out;
}
return out == null ? "empty" : out;
}
MCC dan MNC tersebut dapat diperoleh pada device yang memiliki Java Runtime 1.0.0 dan setelahnya dengan 3rd party signing. Untuk device sebelum itu, operator / manufacturer domain signing diperlukan agar fungsi ini dapat berjalan.
Semoga bermanfaat!
Sebagian besar aplikasi yang beredar saat ini membutuhkan koneksi ke server entah itu untuk mengambil ataupun menyimpan data. Banyak sekali aplikasi mobile hanya sebagai interface untuk menampilkan data yang diperoleh dari server dan mengirimkan data yang diberikan oleh pengguna. Salah satu format yang sangat populer digunakan dalam proses pengiriman data adalah JSON. Proses parsing pada Java ME dapat dengan mudah dilakukan dengan menggunakan library json-me.
Sebagai contoh kasus, berikut adalah String JSON yang akan di-parse:
{
"id": "1",
"name": "Jeffrey Hermanto Halimsetiawan",
"location": {
"address": "Diponegoro 25",
"city": "Surabaya",
"state": "East Java"
}
}
Langkah-langkah untuk melakukannya adalah sebagai berikut:
- Tambahkan file json-me.jar sebagai Resources pada Netbeans project.

- Tambahkan sebuah interface bernama JSONAble yang akan di-inherit oleh semua class yang merupakan hasil dari JSON parsing.
/** * * @author Jeffrey */ public interface JSONAble { String toJSON(); void fromJSON(String jsonString); } - Tambahkan sebuah class bernama User yang akan digunakan untuk menampung hasil dari JSON parsing.
import org.json.me.JSONException; import org.json.me.JSONObject; /** * * @author Jeffrey */ public class User implements JSONAble { protected String id; protected String name; protected String address; protected String city; protected String state; public String getId() { return id; } public String getName() { return name; } public String getAddress() { return address; } public String getCity() { return city; } public String getState() { return state; } public void fromJSON(String jsonString) { try { JSONObject json = new JSONObject(jsonString); id = json.getString("id"); name = json.getString("name"); JSONObject location = json.getJSONObject("location"); address = location.getString("address"); city = location.getString("city"); state = location.getString("state"); } catch (JSONException ex) { ex.printStackTrace(); } } public String toJSON() { return ""; } } - Lakukan parsing JSON tersebut dengan potongan kode berikut:
String json = ""; // String yang berisi JSON seperti disebutkan di atas User user = new User(); user.fromJSON(json);
- Object user telah siap digunakan untuk menampilkan data-data yang terdapat pada JSON tersebut.
Langkah-langkah di atas hanya melakukan parsing terhadap String dalam format JSON, sedangkan untuk men-generate String dalam format JSON dapat dilakukan di dalam method toJSON() yang terdapat pada class User.
Semoga bermanfaat!
Kadangkala apabila logo dari aplikasi Windows Phone yang dibuat telah memuat nama aplikasi, tentunya akan kurang nyaman dipandang apabila di bagian kiri bawah tile tersebut masih tercantum default title nya. Beberapa contoh aplikasi Windows Phone yang menyembunyikan nama aplikasi tersebut antara lain: Facebook, LinkedIn dan masih banyak lagi.
Langkah-langkah untuk melakukannya:
- Pada folder Properties yang terdapat pada project di Solution Explorer, klik kanan WMAppManifest.xml dan pilih Open
- Kosongkan nilai yang terdapat pada tag <Title></Title> seperti pada gambar berikut.
- Simpan perubahan yang terjadi pada WMAppManifest.xml
Rebuild dan Run kembali project tersebut dan tile aplikasi Windows Phone tersebut tidak akan lagi menampilkan nama aplikasi. Salah satu contoh aplikasi yang telah berhasil menyembunyikan nama aplikasi adalah Couple Shots.
Selamat mencoba!
Pada tanggal 29 Desember 2012 kemarin, saya dan 2 teman saya berkesempatan mengikuti 2012 Windows App 開發嘉年華 yaitu sebuah kompetisi pengembangan aplikasi Windows 8 ataupun Windows Phone 8 lokal yang diadakan oleh Microsoft Taiwan selama 36 jam. Acara ini dimulai pada pukul 09.30 di Recreational Hall – National Taipei University, Taipei, Taiwan.
Coding time dimulai dari 29 Desember 2012 pukul 11.00 hingga 30 Desember 2012 pukul 11.00. Di sela-sela waktu tersebut diisi dengan berbagai macam konsumsi yang tidak ada habisnya dan apabila peserta merasa suntuk dapat pergi ke area rekreasi untuk bermain XBox ataupun mencoba berbagai macam bentuk PC atau tablet Windows 8.
Setelah waktu coding yang cukup lama, saya dan tim memutuskan untuk tidur pada pukul 01.30 hingga 07.00 pada bantalan yang disediakan oleh panitia dengan cuaca yang cukup dingin sekitar 12 – 15 derajat Celcius.
Pada pukul 11.00, coding time telah usai dan peserta dapat menyantap makan siang dan melakukan persiapan demo. Tim kami mendapat giliran ke-18 dan panitia memberitahu bahwa waktu demo hanya 2 menit. Kami pun membuat skenario demo sehingga waktu 2 menit dapat dimanfaatkan dengan baik. Akhirnya pada pukul 13.00, tiba giliran saya untuk mempresentasikan aplikasi tersebut dengan Bahasa Inggris karena kemampuan Bahasa Mandarin semua anggota tim kami masih sangat terbatas. Latar belakang, solusi dan cara penggunaan aplikasi melalui animasi telah dijelaskan dalam waktu 1 menit tetapi sisa 1 menit untuk menunjukkan fitur-fitur aplikasi secara langsung tidak berjalan dengan baik.
Singkat cerita, sesuai perkiraan kami kalah karena tidak sempat menunjukkan seluruh fitur aplikasi secara langsung dalam 2 menit demo. Selain itu, kamilah satu-satunya tim internasional dalam kompetisi lokal tersebut dan satu-satunya tim yang menggunakan Bahasa Inggris dalam presentasinya. Mungkin saja para juri yang semuanya juga orang lokal Taiwan juga tidak mengerti penjelasan dalam Bahasa Inggris yang saya sampaikan, entahlah tapi saya syukuri saja pengalaman pertama mengikuti kompetisi lokal di negara berbahasa Mandarin. Minimal, kompetisi ini menambah pengalaman dan memacu saya dan tim untuk menghasilkan sebuah aplikasi dalam waktu 24 jam bernama Couple Shots yang saat ini telah tersedia di Windows Phone Store. Berikut deskripsi singkat dari aplikasi tersebut:
When we go to the tourist attraction spot, we will see a lot of couple who taking their self-picture by themselves. They use rear camera because its quality is much more better than front camera but it’s very difficult to get the perfect shot. Now, all couples don’t need to worry anymore because Couple Shots will assist them to take a perfect shot. And, edit the photo of their memorable moment and share it to their Facebook and Twitter easily! Couple Shots is the real answer!
Kalah atau menang dalam kompetisi bukan segalanya tapi yang lebih penting adalah semangat untuk terus mengembangkan aplikasi tersebut. Selamat menikmati aplikasi tersebut dan semoga bermanfaat!
PS: Photo Credits by Microsoft Taiwan.





