September 5, 2010

Android Telephony Manager dan Cell Location Info Simple Program

Android SDK memiliki Telephony Manager yang menyediakan fungsi-fungsi yang berkaitan dengan telefoni, salah satunya adalah network cell-info.

Sore ini saya berhasil membuat program tool sederhana untuk melakukan probe posisi saya di jaringan GSM. Dengan memanfaatkan Telephony Manager, saya bisa tau cell-id yang meng-cover posisi saya sekarang… Lumayan, kalo komplain GPRS lambat bisa langsung tau kena masalahnya nya pas lagi di cell mana, sehingga membantu proses troubleshot.

Provides access to information about the telephony services on the device. Applications can use the methods in this class to determine telephony services and states, as well as to access some types of subscriber information. Applications can also register a listener to receive notification of telephony state changes.


Ada 2 fungsi yang menarik yaitu getCellLocation() dan getNeighboringCellInfo(). Dengan fungsi-fungsi tersebut, posisi kita di dalam jaringan GSM/WCDMA bisa diketahui.

Langsung aja buat program HelloAndroid yang gampang dan pasti bisa jalan :)

ardhy@zangetsu:/tmp$ mkdir HelloAndroid
ardhy@zangetsu:/tmp$ cd HelloAndroid/ 
ardhy@zangetsu:/tmp/HelloAndroid$ android create project -t 2 -p . -k com.android.helloandroid -a HelloAndroid
Setelah itu, barulah di-permak rame-rame file HelloAndroid.java-nya

ardhy@zangetsu:/tmp/HelloAndroid$ vim src/com/android/helloandroid/HelloAndroid.java
Tinggal copy paste aja kode dibawah ini…

package com.android.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.telephony.TelephonyManager;
import android.content.Context;

public class HelloAndroid extends Activity
{
/** Called when the activity is first created. */
@Override public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
TelephonyManager tm = (TelephonyManager) 
getSystemService(Context.TELEPHONY_SERVICE);
TextView tv = new TextView(this);
tv.setText("## Simple GSM Info ##\n\n
Cell location:\n"+tm.getCellLocation()+"\n\n
Neighboring cells:\n"+tm.getNeighboringCellInfo());
setContentView(tv);
} }
Selanjutnya, gunakan ant untuk membangun aplikasi secara otomatis dan langsung pasang (install, red) di HP. Dijamin kaga ada error pas kompilasi :)

ardhy@zangetsu:/tmp/HelloAndroid$ ant install
Dicoba lagi… Jyaaaahh… Error!

Hello Android Application Permission Error

Manifest Permission

Usut punya usut, ternyata si aplikasi ini harus diberi permission untuk mengakses coarse — saya tidak tahu, apa ini. Menurut petunjuk dari SDK (file:///home/ardhy/Desktop/SRC/android app/android-sdk-linux_x86-1.5_r2/docs/reference/android/Manifest.permission.html)

String ACCESS_COARSE_LOCATION Allows an application to access coarse (e.g., Cell-ID, WiFi) location


Jadi permission ini harus ditambah supaya aplikasi mendapatkan grant untuk mengakses informasi yang dimaksud.

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Maka saya define permission tersebut di file AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.android.helloandroid" android:versionCode="1" android:versionName="1.0">
<application android:label="@string/app_name">
<activity android:name=".HelloAndroid" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>  
Trus, lakukan uninstall HelloAndroid menggunakan — contoh — pake AppManager, bisa dicari di-market dan lakukan ant install lagi.

7 comments:

  1. Terbaik Bos Adry.....
    Mantap nich :)

    ReplyDelete
  2. tengkyu, Bli...

    cuma iseng kok, itu ada semua di API documentationnya Android, tinggal nyontek doang :)

    ReplyDelete
  3. Dibawah ini ada beberapa link tutorial untuk translasi dari LAC-CID ke LONG-LAT via Google Map -- dapet dari orang lain :D

    http://www.devx.com/wireless/Article/40524
    http://www.anddev.org/poor_mans_gps_-_celltowerid_-_location_area_code_-lookup-t257.html

    Yang dari anddev, dia pake simulator. Data LAC & CID-nya diinput manual, tidak di look-up dari BTS. Jadi objective dia hanya untuk ngetes translasi CID+LAC menjadi LONG-LAT menggunakan Google Map.

    Yang kedua -- devx -- dia bisa dipake di HP beneran. Dia pake cara yang sama dengan saya, yaitu TelephonyManager.getCellLocation().

    Bedanya, dia menampilkan CID menggunakan getCid() dan LAC menggunakan getLac(), sedangkan saya menampilkannya langsung pake getCellLocation() -- saya juga mo coba ah :D

    Selanjutnya, dia juga melakukan translasi ke LONG-LAT pake Google Map.

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
  5. jadi untuk yang --devx-- jika saya menggunakan handset bisa langsung dapet CID & LAC nya mas????

    apa ada kodingan yang harus saya tambah / ubah lagi???

    ReplyDelete
  6. Bisa. Itu bisa langsung dapet infonya.

    Koding tambahan bisa disesuaikan dengan keinginan.

    ReplyDelete
  7. makasih ya mas,,, nanti klo ada yang ga ngerti saya tanya lagi ya.... ^_^

    ReplyDelete