STM32嵌入式AI编程:Claude Code协同开发方法论
2026/9/17 8:19:28
String model= android.os.Build.MODEL;String carrier= android.os.Build.MANUFACTURER;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); }作者:陈志宝 | 志尊宝