关闭

Android手机信号

290人阅读 评论(0) 收藏 举报
分类:

<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

0
0
查看评论

代码实现android手机信号监听

基于android5.0以上版本: 首先我们必须在AndroidManifest.xml中添加相关权限: android.permission.CHANGE_NETWORK_STATE 具体实现方法: 自定义一个类MyPhoneStateListener  ,继承PhoneStateL...
  • u012756007
  • u012756007
  • 2015-06-30 11:23
  • 1198

Android的信号格数显示优化

本人的主要研究的方向是android的telephony he
  • hanxiaoming292
  • hanxiaoming292
  • 2014-10-27 15:10
  • 1674

Android 怎么获取手机网络信号问题

在我们有的时候需要可能需要自己写一个状态栏显示手机的的当前网络类似网络信号的问题这些需求先说说思路吧。 1.这个里面涉及一个核心的api :PhoneStateListener  让某个类继承PhoneStateListener  重写:onSignalStrengths...
  • peakfa
  • peakfa
  • 2017-02-14 14:51
  • 428

如何获取手机信号

1. 广播监听 IntentFilter mIntentFilter = new IntentFilter(); mIntentFilter.addAction(IntentHelper.ECARX_ACTION_TBOX_SIGNAL_CHANGED); mIntentFilter.addActi...
  • hlllmr1314
  • hlllmr1314
  • 2017-05-15 11:00
  • 237

android-状态栏SIM卡信号显示(一)

4.3 多SIM卡状态栏信号更新: 1>: 信号以是否连接使用数据分为2组:未连接使用数据的,连接使用数据的: TelephonyIcons.java     //GSM/UMTS 2>: 数据是否连接使用在MSimNetworkController.j...
  • yunwuhuxin
  • yunwuhuxin
  • 2013-12-16 20:44
  • 2445

纯CSS实现手机信号样式的进度条

接下来这一篇是纯CSS实现的类似手机信号样式的进度条,较之前更加高大上、炫酷,更小(几行css代码不到1k).
  • dizuncainiao
  • dizuncainiao
  • 2017-09-26 14:40
  • 351

android 手机信号状态说明

移动用户:   手机的网络图标有这三种:“G,E,H   G:全称:gprs既传输速率理论的峰值为114Kbps,这是早其的无线网络传输方式。   E:全称:EDGE既传输速率在峰值可以达到384kbps,现在比较主流的无线网络传输方式。     T:全称:...
  • zxf20063033
  • zxf20063033
  • 2012-07-26 09:50
  • 801

高层住宅手机信号差与基站天线高度等有关

近来,高层住户受到手机信号差困扰,记者就此进行走访   电话铃声响起,拿起手机的第一件事不是立即接听电话,而是走到阳台或窗户边才开始接听电话,更有甚者会挂断电话,用座机回拨过去。这样的经历,相信不少高层住宅的居民都有过。……   近几年,一栋栋高层拔地而起,人们纷纷搬进高层,过上了“一览...
  • Dallin0408
  • Dallin0408
  • 2018-01-26 16:00
  • 42

去除android手机信号图标

去除android2.1手机信号图标 2010-12-17 16:05 今天将android2.1中状态栏中手机、3G等信号图片去除掉,因为开发android2.1 是作MID终端使用,手机模块用不着,信号在状态栏上不和谐了。 frameworks/base/services/java/c...
  • u013815973
  • u013815973
  • 2014-04-10 14:07
  • 584

Android 手机信号 dBm, asu

if (!signalStrength.isGsm()) {    int dBm = signalStrength.getCdmaDbm();    if (dBm >= -75) bin = SIGNAL_STRENGTH_GREAT; &...
  • java_zhaoyanli
  • java_zhaoyanli
  • 2015-05-25 19:49
  • 558
    个人资料
    • 访问:73314次
    • 积分:1705
    • 等级:
    • 排名:千里之外
    • 原创:79篇
    • 转载:125篇
    • 译文:0篇
    • 评论:6条