
大家好我是陳志寶一名天津全棧軟件開發工程師。本篇記錄開發時遇到的問題以及解決方案。1. 獲取手機型號String model android.os.Build.MODEL;2. 獲取手機廠商String carrier android.os.Build.MANUFACTURER;3、獲取手機信號強度public void getCurrentNetDBM(Context context) { final TelephonyManager tm (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); PhoneStateListener mylistener new PhoneStateListener(){ Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { super.onSignalStrengthsChanged(signalStrength); String signalInfo signalStrength.toString(); String[] params signalInfo.split( ); if(tm.getNetworkType() TelephonyManager.NETWORK_TYPE_LTE){ //4G網絡 最佳范圍 -90dBm 越大越好 int Itedbm Integer.parseInt(params[9]); setDBM(Itedbm); }else if(tm.getNetworkType() TelephonyManager.NETWORK_TYPE_HSDPA || tm.getNetworkType() TelephonyManager.NETWORK_TYPE_HSPA || tm.getNetworkType() TelephonyManager.NETWORK_TYPE_HSUPA || tm.getNetworkType() TelephonyManager.NETWORK_TYPE_UMTS){ //3G網絡最佳范圍 -90dBm 越大越好 ps:中國移動3G獲取不到 返回的無效dbm值是正數85dbm //在這個范圍的已經確定是3G但不同運營商的3G有不同的獲取方法故在此需做判斷 判斷運營商與網絡類型的工具類在最下方 String yys IntenetUtil.getYYS(getApplication());//獲取當前運營商 if (yys中國移動) { setDBM(0);//中國移動3G不可獲取故在此返回0 }else if (yys中國聯通) { int cdmaDbm signalStrength.getCdmaDbm(); setDBM(cdmaDbm); }else if (yys中國電信) { int evdoDbm signalStrength.getEvdoDbm(); setDBM(evdoDbm); } }else{ //2G網絡最佳范圍-90dBm 越大越好 int asu signalStrength.getGsmSignalStrength(); int dbm -113 2*asu; setDBM(dbm); } } }; //開始監聽 tm.listen(mylistener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); }作者陳志寶 | 志尊寶