android dbm模式判断,Android 【信号格的客制化】Part 三:手机上显示的信号强度dbm值不正确...

本文主要是介绍android dbm模式判断,Android 【信号格的客制化】Part 三:手机上显示的信号强度dbm值不正确...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android 【信号格的客制化】Part 3:手机上显示的信号强度dbm值不正确

前言         欢迎大家我分享和推荐好用的代码段~~声明         欢迎转载,但请保留文章原始出处:

CSDN:http://www.csdn.net

雨季o莫忧离:http://blog.csdn.net/luckkof

正文

若做信号验证测试时,从仪器上读取到的信号强度与在手机设置中上读取到的信号强度差异较大,尤其3G网络情况下特别明显。请参考以下说明做修改后再进行测试。

另外需要说明的是,由于测量误差以及计算误差,仪器上的读数与手机上的读数相差±3dbm应该属于正常范围。另外,测试时对于仪器信号变化的频率不宜过快,因为底层的变化需要一定时间才能更新到UI上。

[SOLUTION]

手机上目前可能有两个地方可以看见信号强度dbm值:

Ø设置——SIM卡管理——SIM卡信息——状态信息——信号强度

Ø设置——关于手机——状态信息——SIM卡状态——信号强度

由于UI上得到信号强度dbm值调用的接口,可能使用了2G信号公式从asu值推算得到dbm值,因此在3G网络下调用此接口会有一些问题出现。请根据版本情况对照修改:

Android 4.0

修改SignalStrength.java

public int getGsmDbm() {

int dBm;

int gsmSignalStrength = getGsmSignalStrength();

int asu = (gsmSignalStrength == 99 ? -1 : gsmSignalStrength);

if (asu != -1) {

//mtk add

//if(IS_CMCC && mGsmRscpQdbm < 0)

if(mGsmRscpQdbm < 0)

//mtk add end

{

// Return raw value for TDD 3G network.

dBm = mGsmRscpQdbm / 4;

} else {

dBm = -113 + (2 * asu);

}

} else {

dBm = -1;

}

if (DBG) log("getGsmDbm=" + dBm);

return dBm;

}

private void setFromNotifierBundle(Bundle m) {

//MTK-START [mtk04070][111116][ALPS00093395]Support Gemini

mSimId = m.getInt("simId");

//MTK-END [mtk04070][111116][ALPS00093395]Support Gemini

mGsmSignalStrength = m.getInt("GsmSignalStrength");

mGsmBitErrorRate = m.getInt("GsmBitErrorRate");

mCdmaDbm = m.getInt("CdmaDbm");

mCdmaEcio = m.getInt("CdmaEcio");

mEvdoDbm = m.getInt("EvdoDbm");

mEvdoEcio = m.getInt("EvdoEcio");

mEvdoSnr = m.getInt("EvdoSnr");

mLteSignalStrength = m.getInt("LteSignalStrength");

mLteRsrp = m.getInt("LteRsrp");

mLteRsrq = m.getInt("LteRsrq");

mLteRssnr = m.getInt("LteRssnr");

mLteCqi = m.getInt("LteCqi");

isGsm = m.getBoolean("isGsm");

mGsmRscpQdbm = m.getInt("RscpQdbm"); //mtk add

}

public void fillInNotifierBundle(Bundle m) {

//MTK-START [mtk04070][111116][ALPS00093395]Support Gemini

m.putInt("simId", mSimId);

//MTK-END [mtk04070][111116][ALPS00093395]Support Gemini

m.putInt("GsmSignalStrength", mGsmSignalStrength);

m.putInt("GsmBitErrorRate", mGsmBitErrorRate);

m.putInt("CdmaDbm", mCdmaDbm);

m.putInt("CdmaEcio", mCdmaEcio);

m.putInt("EvdoDbm", mEvdoDbm);

m.putInt("EvdoEcio", mEvdoEcio);

m.putInt("EvdoSnr", mEvdoSnr);

m.putInt("LteSignalStrength", mLteSignalStrength);

m.putInt("LteRsrp", mLteRsrp);

m.putInt("LteRsrq", mLteRsrq);

m.putInt("LteRssnr", mLteRssnr);

m.putInt("LteCqi", mLteCqi);

m.putBoolean("isGsm", Boolean.valueOf(isGsm));

m.putInt("RscpQdbm", mGsmRscpQdbm);//mtk add    }

Android 4.1/4.2

步骤1:请修改ServiceStateExtXXX.java:

public int mapGsmSignalDbm(int GsmRscpQdbm,int asu){

int dBm;

//mtk add

if(mGsmRscpQdbm < 0 && mGsmRscpQdbm ! = -1)

dBm = GsmRscpQdbm / 4; // Return raw value for 3G network.

else

//mtk add end

dBm = -113 + (2 * asu);

return dBm;

}

步骤2:请修改SingalStrength.java,确认下面代码中红色方框中内容:

101412747.bmp

101412748.bmp

101412749.bmp

101412750.bmp

这篇关于android dbm模式判断,Android 【信号格的客制化】Part 三:手机上显示的信号强度dbm值不正确...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/166985

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

poj 3259 uva 558 Wormholes(bellman最短路负权回路判断)

poj 3259: 题意:John的农场里n块地,m条路连接两块地,w个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts。 任务是求你会不会在从某块地出发后又回来,看到了离开之前的自己。 判断树中是否存在负权回路就ok了。 bellman代码: #include<stdio.h>const int MaxN = 501;//农场数const int

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

zoj 1721 判断2条线段(完全)相交

给出起点,终点,与一些障碍线段。 求起点到终点的最短路。 枚举2点的距离,然后最短路。 2点可达条件:没有线段与这2点所构成的线段(完全)相交。 const double eps = 1e-8 ;double add(double x , double y){if(fabs(x+y) < eps*(fabs(x) + fabs(y))) return 0 ;return x + y ;

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p