Android手机信号

转载 2016年05月31日 15:50:22

<3G与2G信号区分>

<BatteryStatsImpl.java>

if (!signalStrength.isGsm()) {

   int dBm = signalStrength.getCdmaDbm();
   if (dBm >= -75) bin = SIGNAL_STRENGTH_GREAT;
   else if (dBm >= -85) bin = SIGNAL_STRENGTH_GOOD;
   else if (dBm >= -95) bin = SIGNAL_STRENGTH_MODERATE;
   else if (dBm >= -100) bin = SIGNAL_STRENGTH_POOR;
   else bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
} else {
   int asu = signalStrength.getGsmSignalStrength();
   if (asu < 0 || asu >= 99) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
   else if (asu >= 16) bin = SIGNAL_STRENGTH_GREAT;
   else if (asu >= 8) bin = SIGNAL_STRENGTH_GOOD;
   else if (asu >= 4) bin = SIGNAL_STRENGTH_MODERATE;
   else bin = SIGNAL_STRENGTH_POOR;

}

<Phone.java>

GSM信号单位<dBm-asu>换算公式:dBm = -113 -2*asu;

/**
* Get current signal strength. No change notification available on this
* interface. Use <code>PhoneStateNotifier</code> or an equivalent.
* An ASU is 0-31 or -1 if unknown (for GSM, dBm = -113 - 2 * asu).
* The following special values are defined:</p>
* <ul><li>0 means "-113 dBm or less".</li>
* <li>31 means "-51 dBm or greater".</li></ul>
*
* @return Current signal strength as SignalStrength
*/
SignalStrength getSignalStrength();


其它信息:

4G:

String ssignal = signalStrength.toString();
String[] parts = ssignal.split(" ");



String ssignal = signalStrength.toString();


String[] parts = ssignal.split(" ");
The parts[] array will then contain these elements:


part[0] = "Signalstrength:"  _ignore this, it's just the title_
parts[1] = GsmSignalStrength
parts[2] = GsmBitErrorRate
parts[3] = CdmaDbm
parts[4] = CdmaEcio
parts[5] = EvdoDbm
parts[6] = EvdoEcio
parts[7] = EvdoSnr
parts[8] = LteSignalStrength
parts[9] = LteRsrp
parts[10] = LteRsrq
parts[11] = LteRssnr
parts[12] = LteCqi
parts[13] = gsm|lte
parts[14] = _not really sure what this number is_

So, LTEdBm is :
TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
int dbm = 0;
if ( tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE){
   dbm = Integer.parseInt(parts[8])*2-113;
}
else{
   if (signalStrength.getGsmSignalStrength() != 99) {
                   int intdbm = -113 + 2
                           * signalStrength.getGsmSignalStrength();
                   dbm = Integer.toString(intdbm);
               }
}


//GSM信号单位<dBm-asu>换算公式:dBm = -113 +2*asu;


参考:

http://code.taobao.org/p/cnandroiddocs/src/trunk/telephony/java/android/telephony/CellSignalStrengthLte.java

相关文章推荐

android手机信号强度检测

android手机信号强度检测 最近在面试的时候被问到一个问题,当手机处于弱网状态下,如何处理,如何监听网络信号强度变化。 这里先了解关于手机信号强度的相关几个概念 文章出处:http://b...

Android手机信号强度介绍

Android手机信号强度介绍 android定义了2种信号单位:dBm和asu。 它们之间的关系是:dBm =-113+2*asu,这是google给android手机定义的特有信号单位。...

android手机信号强度

在android手机上,通过“设置”-“关于手机”-“状态”-“信号强度”可以查看到手机的信号强度,显示出如“-87 dBm 13 asu”这样的数据。ASU与dBm之间的关系是:dBm=-113+(...
  • garybook
  • garybook
  • 2013年11月28日 15:25
  • 15837

Android基站定位——通过手机信号获取基站信息(一)

基站定位原理:通过手机信号获取基站信息,然后调用第三方公开的根据基站信息查找基站的经纬度值,想要具体地址信息的再根据经纬度值获取具体的地址信息。 一、通过手机信号获取基站信息  通过Telep...

Android:TelephonyManager,MyPhoneStateListener监听手机信号强度

import android.app.Activity; import android.content.Context; import android.os.Bundle; import androi...

Android基站定位——通过手机信号获取基站信息(一)

转载请标明出处:http://blog.csdn.net/android_ls/article/details/8672442 基站定位原理:通过手机信号获取基站信息,然后调用第三方公开的根据基站信...

Android获取到手机信号强度信息后传回给unity

之前做了一个在unity里面获取安卓手机信号强度的功能,看了很多帖子,大多数讲得很好,但是对于一窍不通的我来说,帖子还是有点不全,我不能按照帖子很顺利的做出来,经过一番尝试,最终还是做出了一个版本,顺...

Android基站定位——通过手机信号获取基站信息

转载请标明出处:http://blog.csdn.net/android_ls/article/details/8672442 基站定位原理:通过手机信号获取基站信息,然后调用第三方公开的根据基站信...
  • lei1217
  • lei1217
  • 2015年03月01日 19:00
  • 2618

Android手机Pixel风格G网信号图标

  • 2012年03月15日 21:21
  • 10KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android手机信号
举报原因:
原因补充:

(最多只允许输入30个字)