起因:项目需要获取4G信号强度,进行显示。

经过:通过google,发现获取4G信号强度都是通过读取字符串的方式获取,但是我还没有搞懂取出的是什么,也不知道怎么通过那个值转化成显示的格数。

所以,我想看看系统是怎么实现的,看看能不能用跟系统同样的方式获取dbm值或者取出信号强度的格数。

结果:经过一番折腾,终于找到了一个隐藏的方法:

在frameworks\base\telephony\java\android\telephony\SignalStrength.java内找到该方法

/**

* Get the signal strength as dBm

*

* @hide

*/

public int getDbm() {

int dBm;

if(isGsm()) {

dBm = getLteDbm();

//MTE-START [ALPS01200757]

//if (dBm == INVALID) {

if (!isCampOnLte()) {

//MTE-END [ALPS01200757]

dBm = getGsmDbm();

}

} else {

int cdmaDbm = getCdmaDbm();

int evdoDbm = getEvdoDbm();

return (evdoDbm == -120 || evdoDbm == -113) ? cdmaDbm

: ((cdmaDbm == -120 || cdmaDbm == -113) ? evdoDbm

: (cdmaDbm < evdoDbm ? cdmaDbm : evdoDbm));

}

if (DBG) {

log("getDbm=" + dBm);

}

return dBm;

}

但是该方法是隐藏的,凑巧的是,通过方法

public void onSignalStrengthsChanged(SignalStrength signalStrength)

来监听4G信号变化,刚好有SignalStrehgth对象,那就通过反射的方式获取,正好

Method method1 = null;

method1 = signalStrength.getClass().getMethod("getDbm");

dbm = method1.invoke(signalStrength);

这样就能取出dbm值了。

注:

Method method2 = signalStrength.getClass().getMethod("getLteLevel");

level = method2.invoke(signalStrength);

通过这个方法能获取出和系统一样的信号格数。

android信号强弱动画,Android6.0获取4G信号的信号强度(dbm)相关推荐

  1. 获取4g信号强度android,Android6.0获取4G信号的信号强度(dbm)进行显示

    起因:项目需要获取4G信号强度,进行显示. 经过:通过google,发现获取4G信号强度都是通过读取字符串的方式获取,但是我还没有搞懂取出的是什么,也不知道怎么通过那个值转化成显示的格数. 所以,我想 ...

  2. android动态获取地理位置权限,Android6.0获取GPS定位和获取位置权限和位置信息的方法...

    1.添加权限--6.0之后要动态获取,下面会说 2.直接上代码,不多说,代码中注释很详细. private static final int BAIDU_READ_PHONE_STATE = 100; ...

  3. android信号强弱动画,Android自定义View展示Wifi信号强弱指示方法示例

    前言 最近因为工作的需要,要自定义展示Wifi信号强弱的需要,就通过利用系统广播的方式实现了一个自定义View--WifiStateView,下面话不多说了,感兴趣的朋友们一起来看看详细的介绍吧. 实 ...

  4. android6.0获取通讯录权限

    android6.0中,获取通讯录的权限是     <uses-permission android:name="android.permission.GET_ACCOUNTS&quo ...

  5. android 相机拍照返回,Android6.0机型上调用系统相机拍照返回的resultCode值始终等于0的问题...

    版权声明:本文为博主原创文章,未经博主允许不得转载. 正常情况下调用系统相机拍照: 如果拍照后点击的是"确定"图标,返回的resultCode = -1(Activity.RESU ...

  6. [Android Studio]详细讲解Android6.0以上请求应用权限(解决请求权限窗口一闪而过的问题)

    现在的主流手机的Android版本都是8.0/9.0(笔者的华为手机为9.0),所以在开发Android的时候尽量使用Android8.0的版本(SDK 26).随着Android版本的提升,系统的安 ...

  7. android launcher 字体大小,Android6.0 Launcher3 修改app字体大小

    在原生的Android6.0中,在修改了系统字体大小后,Launcher 3上的app字体大小没有改变,下面方法可以解决:--- a/packages/apps/Launcher3/src/com/a ...

  8. android禁止压缩壁纸,Android6.0 屏蔽壁纸功能

    软件平台:android6.0 硬件平台:MT6797 这两天搞了一个定制需求,也算是一个bug吧,6.0的系统前阵子做了系统裁剪,去掉了几十个app和service,结果一开始没出现的问题,裁剪后出 ...

  9. android关闭权限管理,Android6.0权限管理以及使用权限该注意的地方

    Android 6.0 Marshmallow首次增加了执行时权限管理,这对用户来说,能够更好的了解.控 制 app 涉及到的权限.然而对开发人员来说却是一件比較蛋疼的事情.须要兼容适配,并保证程序功 ...

最新文章

  1. Creating Apps With Material Design —— Defining Custom Animations
  2. XINGNET交换机病毒防范
  3. Excel中Sumproduct函数的使用方法
  4. 值类型与引用类型(下)
  5. 2018华为软件精英挑战赛总结
  6. 片上网络NoC(一)—— 概述
  7. C语言学习之输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
  8. java Object类是可以接收集合类型的
  9. python实现嵌套功能_我应该如何在Python中实现“嵌套”子命令?
  10. 让我变得开朗了很多哦
  11. 华为p40为何没有搭载鸿蒙系统?
  12. BZOJ2142: 礼物
  13. 适配器模式 - 上厕所案例
  14. python 字符串转字节_【转】python中的字符串和字节串
  15. fortran---说实话,不知道记录有什么用 写着玩吧
  16. 简单记账本-android版
  17. 【保密知识】排查失泄密隐患 防控保密风险点
  18. 「首席架构师精选」精选绘图软件
  19. arm rtx教程_【RTX操作系统教程】第4章 RTX操作系统介绍
  20. Android日期时间与时区使用总结汇总

热门文章

  1. Densefuse: 成功解决ValueError: cannot reshape array of size xxx into shape (xxx,xxx,xxx)
  2. 类似货拉拉的货运APP开发软件怎么做
  3. int与float深入理解
  4. 7. kafka序列化反序列化
  5. 代码整洁之道读书笔记——第一章:整洁代码
  6. intllij idea -- 文件行数过多出现卡顿,特别卡
  7. C#已知两点(线段),求互相垂直平分两点(线段)。
  8. access查询成绩小于5分_Access数据库查询在成绩分析中的运用
  9. b550和x570主板区别
  10. 社交电商是零售行业新的流量口?