2014年4月2日 星期三

Get Base Station Information

This topic guild how to get the sdcard information about the base station.

In BaseStationInfoHelper.java
package com.main;

import android.content.Context;
import android.telephony.CellLocation;
import android.telephony.TelephonyManager;
import android.telephony.cdma.CdmaCellLocation;
import android.telephony.gsm.GsmCellLocation;

public class BaseStationInfoHelper {
 //android.permission.ACCESS_COARSE_LOCATION
 public static class BaseStationInfo {
        /** Country */
        public int mcc = -1;
        /** ISP */
        public int mnc = -1;
        /** Base Station Number*/
        public int lac = -1;
        /** Small Region Number */
        public int cid = -1;
    }
    public static BaseStationInfo getSimCardInfo(Context context) {
        final TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

        BaseStationInfo res = new BaseStationInfo();

        CellLocation clll = telephony.getCellLocation();
        if (clll == null) {
            return res;
        }

        if (clll instanceof GsmCellLocation) {
            GsmCellLocation gsm = (GsmCellLocation) clll;
            int lac = gsm.getLac();
            String mcc = telephony.getNetworkOperator().substring(0, 3);
            String mnc = telephony.getNetworkOperator().substring(3);

            res.cid = gsm.getCid();
            res.mcc = Integer.parseInt(mcc);
            res.mnc = Integer.parseInt(mnc);
            res.lac = lac;
        } else if (clll instanceof CdmaCellLocation) {
            CdmaCellLocation cdma = (CdmaCellLocation) clll;
            int lac = cdma.getNetworkId();
            String mcc = telephony.getNetworkOperator().substring(0, 3);
            String mnc = telephony.getNetworkOperator().substring(3);
            int cid = cdma.getBaseStationId();
            res.cid = cid;
            res.mcc = Integer.parseInt(mcc);
            res.mnc = Integer.parseInt(mnc);
            res.lac = lac;
        }
        return res;
    }
}

In MainActivity.java
package com.main;
import com.example.celllocation.R;
import com.main.BaseStationInfoHelper.BaseStationInfo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;


public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //
  TextView tv = (TextView) this.findViewById(R.id.textView1);
  //
  BaseStationInfo info = BaseStationInfoHelper.getSimCardInfo(this);
  String displayString = "";
  if(info != null){
   displayString += "Country mcc = " + info.mcc + "\r\n";
   displayString += "ISP mnc = " + info.mnc + "\r\n";
   displayString += "Base Station Number lac = " + info.lac + "\r\n";
   displayString += "Cell id = " + info.cid + "\r\n";
   //
   tv.setText(displayString);
  }
  else{
   tv.setText("Cannot get the base station information.");
  }
 }

}

In activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="TextView"
        android:textSize="20sp" />

</RelativeLayout>

In AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.celllocation"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity android:name="com.main.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>


執行結果:

1 則留言 :