Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android基站定位之實現通過手機信號獲取基站信息

Android基站定位之實現通過手機信號獲取基站信息

編輯:Android開發實例

基站定位原理:通過手機信號獲取基站信息,然後調用第三方公開的根據基站信息查找基站的經緯度值,想要具體地址信息的再根據經緯度值獲取具體的地址信息。

一、通過手機信號獲取基站信息

 通過TelephonyManager 獲取lac:mcc:mnc:cell-id(基站信息)的解釋:
 MCC,Mobile Country Code,移動國家代碼(中國的為460);
 MNC,Mobile Network Code,移動網絡號碼(中國移動為0,中國聯通為1,中國電信為2); 
 LAC,Location Area Code,位置區域碼;
 CID,Cell Identity,基站編號;
 BSSS,Base station signal strength,基站信號強度。

具體實現代碼如下:

 

  1. package com.easipass.test;  
  2.  
  3. import java.util.List;  
  4.  
  5. import android.app.Activity;  
  6. import android.content.Context;  
  7. import android.os.Bundle;  
  8. import android.telephony.NeighboringCellInfo;  
  9. import android.telephony.TelephonyManager;  
  10. import android.telephony.cdma.CdmaCellLocation;  
  11. import android.telephony.gsm.GsmCellLocation;  
  12. import android.util.Log;  
  13. import android.view.View;  
  14.  
  15. /**  
  16.  * 功能描述:通過手機信號獲取基站信息  
  17.  * # 通過TelephonyManager 獲取lac:mcc:mnc:cell-id  
  18.  * # MCC,Mobile Country Code,移動國家代碼(中國的為460);  
  19.  * # MNC,Mobile Network Code,移動網絡號碼(中國移動為0,中國聯通為1,中國電信為2);   
  20.  * # LAC,Location Area Code,位置區域碼;  
  21.  * # CID,Cell Identity,基站編號;  
  22.  * # BSSS,Base station signal strength,基站信號強度。  
  23.  * @author android_ls  
  24.  */ 
  25. public class GSMCellLocationActivity extends Activity {  
  26.  
  27.     private static final String TAG = "GSMCellLocationActivity";  
  28.       
  29.     @Override 
  30.     public void onCreate(Bundle savedInstanceState) {  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.main);  
  33.  
  34.         // 獲取基站信息  
  35.         findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {  
  36.  
  37.             @Override 
  38.             public void onClick(View v) {  
  39.  
  40.                 TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);  
  41.  
  42.                 // 返回值MCC + MNC  
  43.                 String operator = mTelephonyManager.getNetworkOperator();  
  44.                 int mcc = Integer.parseInt(operator.substring(0, 3));  
  45.                 int mnc = Integer.parseInt(operator.substring(3));  
  46.  
  47.                 // 中國移動和中國聯通獲取LAC、CID的方式  
  48.                 GsmCellLocation location = (GsmCellLocation) mTelephonyManager.getCellLocation();  
  49.                 int lac = location.getLac();  
  50.                 int cellId = location.getCid();  
  51.  
  52.                 Log.i(TAG, " MCC = " + mcc + "\t MNC = " + mnc + "\t LAC = " + lac + "\t CID = " + cellId);  
  53.  
  54.                 // 中國電信獲取LAC、CID的方式  
  55.                 /*CdmaCellLocation location1 = (CdmaCellLocation) mTelephonyManager.getCellLocation();  
  56.                 lac = location1.getNetworkId();  
  57.                 cellId = location1.getBaseStationId();  
  58.                 cellId /= 16;*/ 
  59.                   
  60.                 // 獲取鄰區基站信息  
  61.                 List<NeighboringCellInfo> infos = mTelephonyManager.getNeighboringCellInfo();  
  62.                 StringBuffer sb = new StringBuffer("總數 : " + infos.size() + "\n");  
  63.                 for (NeighboringCellInfo info1 : infos) { // 根據鄰區總數進行循環  
  64.                     sb.append(" LAC : " + info1.getLac()); // 取出當前鄰區的LAC  
  65.                     sb.append(" CID : " + info1.getCid()); // 取出當前鄰區的CID  
  66.                     sb.append(" BSSS : " + (-113 + 2 * info1.getRssi()) + "\n"); // 獲取鄰區基站信號強度  
  67.                 }  
  68.  
  69.                 Log.i(TAG, " 獲取鄰區基站信息:" + sb.toString());  
  70.  
  71.             }  
  72.         });  
  73.  
  74.     }  
  75.  
  76. }  

在AndroidManifest.xml添加獲取位置信息的權限:

  1. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

點擊“獲取基站信息”的按鈕後,Logcat的日志輸出如下:

1、中國聯通:


2、中國移動:

關於定位部分請查看下一篇: Android基站定位之實現單基站定位


轉自:http://blog.csdn.net/android_ls/article/details/8672442

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved