/**     * 得到当前的手机蜂窝网络信号强度     * 获取LTE网络和3G/2G网络的信号强度的方式有一点不同,     * LTE网络强度是通过解析字符串获取的,     * 3G/2G网络信号强度是通过API接口函数完成的。     * asu 与 dbm 之间的换算关系是 dbm=-113 + 2*asu     */    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);    }

   


更多相关文章

  1. Android双机(网络和USB)调试及其完美ROOT
  2. Android如何获取网络连接状态及怎样调用网络配置界面
  3. Android 网络状态实时监测
  4. android判断当前网络状态,eth wifi pppoe等
  5. Android获取当前网络状态和获取当前设备网络ip地址
  6. network: android 网络判断
  7. android网络优化

随机推荐

  1. Android google地图开发的前期准备(MD5和
  2. Android(安卓)图片平铺效果
  3. android技术开发例子,解析以及源码集锦
  4. android LinearLayout布局子空间没有填充
  5. android 获取控件真实高度
  6. Android多国语言文件夹命名
  7. Android(安卓)项目无法生成R文件解决办法
  8. Android当中的SeekBar与iOS中的UISlider
  9. 在android jni中使用log
  10. Android:时间控件