好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

移动联通电信获取基站数据库的方案.doc

12页
  • 卖家[上传人]:pu****.1
  • 文档编号:521431465
  • 上传时间:2022-10-26
  • 文档格式:DOC
  • 文档大小:85KB
  • / 12 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 移动联通电信获取基站数据库的方案在googleAPI里提供了基站信息的获取类TelephonyManager,通过其方法getCellLocation得到CellLocation即可获取到基站相关信息但CellLocation是个抽象类,所以在具体使用时需要判断接入的网络制式来用其子类CdmaCellLocation或GsmCellLocation 来强转CdmaCellLocation对应CDMA网,GsmCellLocation对应GSM网三大网络运营商的网络制式对应如下:移动2G 网 --> GSM移动3G 网 --> TD-SCDMA电信2G 网 --> CDMA电信3G 网 --> CDMA2000联通2G 网 --> GSM联通3G 网 --> WCDMA由此可见移动,联通2G 网都可使用GsmCellLocation电信2G,3G网则使用CdmaCellLocation那么移动3G和联通3G又当如何其实经本人亲测,移动3G网也可使用GsmCellLocation,听说是TD-SCDMA衍生于GSM,具体原因咱也不用纠结了,反正能用就是了而联通的WCDMA据说也可使用GsmCellLocation,那姑且就是这样吧,有条件的童鞋试一试吧。

      对于网络制式的判断调用TelephonyManager.getNetworkType()可有多种情况,如下:· NETWORK_TYPE_UNKNOWN· NETWORK_TYPE_GPRS· NETWORK_TYPE_EDGE· NETWORK_TYPE_UMTS· NETWORK_TYPE_HSDPA· NETWORK_TYPE_HSUPA· NETWORK_TYPE_HSPA· NETWORK_TYPE_CDMA· NETWORK_TYPE_EVDO_0· NETWORK_TYPE_EVDO_A· NETWORK_TYPE_EVDO_B· NETWORK_TYPE_1xRTT· NETWORK_TYPE_IDEN· NETWORK_TYPE_LTE· NETWORK_TYPE_EHRPD通过对网络类型判断后获取对应基站信息代码片段如下:Html代码 1. public static ArrayList getCellIDInfo(Context context) throws Exception{  2.           3.         TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);  4.           5.         ArrayList CellID = new ArrayList();  6.         CellIDInfo currentCell = new CellIDInfo();  7.   8.         int type = manager.getNetworkType();  9.         Log.d(TAG, "getCellIDInfo-->         NetworkType = " + type);  10.         int phoneType = manager.getPhoneType();  11.         Log.d(TAG, "getCellIDInfo-->         phoneType = " + phoneType);  12.           13.         if (type == TelephonyManager.NETWORK_TYPE_GPRS              // GSM网  14.                 || type == TelephonyManager.NETWORK_TYPE_EDGE  15.                 || type == TelephonyManager.NETWORK_TYPE_HSDPA)  16.         {  17.             GsmCellLocation gsm = ((GsmCellLocation) manager.getCellLocation());  18.             if (gsm == null)  19.             {  20.                 Log.e(TAG, "GsmCellLocation is null!!!");  21.                 return null;  22.             }  23.                   24.   25.             int lac = gsm.getLac();  26.             String mcc = manager.getNetworkOperator().substring(0, 3);  27.             String mnc = manager.getNetworkOperator().substring(3, 5);  28.             int cid = gsm.getCid();  29.               30.             currentCell.cellId = gsm.getCid();  31.             currentCell.mobileCountryCode = mcc;  32.             currentCell.mobileNetworkCode = mnc;  33.             currentCell.locationAreaCode = lac;  34.               35.             currentCell.radioType = "gsm";  36.               37.             CellID.add(currentCell);  38.               39.             // 获得邻近基站信息  40.             List list = manager.getNeighboringCellInfo();  41.             int size = list.size();  42.             for (int i = 0; i < size; i++) {  43.   44.                 CellIDInfo info = new CellIDInfo();  45.                 info.cellId = list.get(i).getCid();  46.                 info.mobileCountryCode = mcc;  47.                 info.mobileNetworkCode = mnc;  48.                 info.locationAreaCode = lac;  49.               50.                 CellID.add(info);  51.             }  52.               53.         }else if (type == TelephonyManager.NETWORK_TYPE_CDMA        // 电信cdma网  54.                 || type == TelephonyManager.NETWORK_TYPE_1xRTT  55.                 || type == TelephonyManager.NETWORK_TYPE_EVDO_0  56.                 || type == TelephonyManager.NETWORK_TYPE_EVDO_A)  57.         {  58.               59.             CdmaCellLocation cdma = (CdmaCellLocation) manager.getCellLocation();     60.             if (cdma == null)  61.             {  62.                 Log.e(TAG, "CdmaCellLocation is null!!!");  63.                 return null;  64.             }  65.               66.             int lac = cdma.getNetworkId();  67.             String mcc = manager.getNetworkOperator().substring(0, 3);  68.             String mnc = String.valueOf(cdma.getSystemId());  69.             int cid = cdma.getBaseStationId();  70.               71.             currentCell.cellId = cid;  72.             currentCell.mobileCountryCode = mcc;  73.             currentCell.mobileNetworkCode = mnc;  74.             currentCell.locationAreaCode = lac;  75.       76.             currentCell.radioType = "cdma";  77.               78.             CellID.add(currentCell);  79.               80.             // 获得邻近基站信息  81.             List list = manager.getNeighboringCellInfo();  82.             int size = list.size();  83.             for (int i = 0; i < size; i++) {  84.   85.                 CellIDInfo info = new CellIDInfo();  86.                 info.cellId = list.get(i).get。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.