#####工具类

/*** 获取手机数据信号强度值工具类* dbm的值为负数* 0为最强信号值* -85以内为满格信号*/
public class PhoneNetUtil {private static final int DBM_1 = -85;private static final int DBM_2 = -95;private static final int DBM_3 = -105;private static final int DBM_4 = -115;private static final int DBM_5 = -140;private static final String TAG = "PhoneNetUtil";private static PhoneNetUtil phoneNetUtil;private Context context;private PhoneNetListener phoneNetListener;private PhoneNetLevelListener phoneNetLevelListener;private PhoneNetUtil(Context context) {this.context = context;getNetDBM(context);}public static PhoneNetUtil getInstance(Context context) {if (phoneNetUtil == null) {phoneNetUtil = new PhoneNetUtil(context);}return phoneNetUtil;}public void setPhoneNetListener(PhoneNetListener phoneNetListener) {this.phoneNetListener = phoneNetListener;}public void setPhoneNetLevelListener(PhoneNetLevelListener phoneNetLevelListener) {this.phoneNetLevelListener = phoneNetLevelListener;}/*** 得到当前手机4G信号强度值dbm*/private void getNetDBM(Context context) {final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);PhoneStateListener phoneStateListener = new PhoneStateListener() {@Overridepublic void onSignalStrengthsChanged(SignalStrength signalStrength) {super.onSignalStrengthsChanged(signalStrength);//通过反射获取当前信号值try {Method method = signalStrength.getClass().getMethod("getDbm");int dbm = (int) method.invoke(signalStrength);Log.d(TAG, "4G-dbm: " + dbm);if (phoneNetListener != null) {phoneNetListener.onNetDbm(dbm);}setNetLevel(dbm);} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {e.printStackTrace();Log.d(TAG, "onSignalStrengthsChanged: 获取4G信号强度值失败");}}};//开始监听if (tm != null) {tm.listen(phoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);} else {Log.d(TAG, "get4GNetDBM: TelephonyManager为空,获取手机状态信息失败,无法开启监听");}}/*** 1、当信号大于等于 - 85d Bm时候,信号显示满格* 2、当信号大于等于 - 95d Bm时候,而小于 - 85d Bm时,信号显示4格* 3、当信号大于等于 - 105d Bm时候,而小于 - 95d Bm时,信号显示3格,不好捕捉到。* 4、当信号大于等于 - 115d Bm时候,而小于 - 105d Bm时,信号显示2格,不好捕捉到。* 5、当信号大于等于 - 140d Bm时候,而小于 - 115d Bm时,信号显示1格,不好捕捉到。** @param dbm*/private void setNetLevel(int dbm) {if (phoneNetLevelListener != null) {if (dbm > DBM_1) {phoneNetLevelListener.onNetLevel(5);} else if (DBM_2 < dbm && dbm < DBM_1) {phoneNetLevelListener.onNetLevel(4);} else if (DBM_3 < dbm && dbm < DBM_2) {phoneNetLevelListener.onNetLevel(3);} else if (DBM_4 < dbm && dbm < DBM_3) {phoneNetLevelListener.onNetLevel(2);} else if (DBM_5 < dbm && dbm < DBM_4) {phoneNetLevelListener.onNetLevel(1);} else {phoneNetLevelListener.onNetLevel(0);}}}/*** 当前的信号强度值 dbm*/interface PhoneNetListener {void onNetDbm(int dbm);}/*** 信号强度显示格子数* 最强信号 5 --> 0 最弱信号*/interface PhoneNetLevelListener {void onNetLevel(int level);}
}

获取手机数据信号强度dbm数值相关推荐

  1. 【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://2402766.blog.51cto.com/2392766/1080837 为了 ...

  2. 【Android工具】更新安卓手机传感器信息获取工具Ampere Castro phyphox,轻松获取硬件数据和状态信息...

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 上次分享过一个安卓手机传感器信息获取工具--Castro(本文下边),这个软件没有充电 ...

  3. 【Android工具】安卓手机轻松获取硬件数据和状态信息

    可以获取的硬件信息和软件如上图所示. 硬件中的传感器比较好玩,可以获取手机上所有传感器的数据,还能绘制出变化曲线图 总体来说功能比较多,软件界面也非常干净,就是没有移动网络信号和wifi网络信号强度的 ...

  4. 信号强度 android,一种获取手机信号强度的方法

    出于项目需求,需要获取到手机信号强度.本人不才,以前都是采用toString()的方法,然后截取,得到强度,但发现很多机型都不适合.苦苦在API中搜寻,结果都不是很理想.最后在Stackoverflo ...

  5. android 获取gps信号强度值,一种获取手机信号强度的方法

    出于项目需求,需要获取到手机信号强度.本人不才,以前都是采用toString()的方法,然后截取,得到强度,但发现很多机型都不适合.苦苦在API中搜寻,结果都不是很理想.最后在Stackoverflo ...

  6. Android 获取手机信号强度

    获取手机信号强度:4G(LTE),3G(WCDMA),2G(GSM),代码如下: public static void getPhoneState(Context context) {final Te ...

  7. Android获取手机信号强度汇总

    雪里香梅,先报春来早.--(宋)欧阳修<蝶恋花> 如今的天气是越来略冷了,每每走在凛冽的寒风中,心里就一个想法,春(假)天(期)怎么还不到!不知道大家有没有同感.前两天要做一个获取手机信号 ...

  8. WiFi与惯导融合定位其一:通过安卓手机获取路由器数据(MAC、RSSI)

    电磁类信号定位的方法和原理都大同小异,只是会因为频段的不同而产生了电磁信号不同的损耗特点.所以5G定位也好,WiFi定位也好,算法原理都是差不多,不同的是基站和频谱.对于WiFi定位的实验,先从这种最 ...

  9. ua获取手机型号_取证人员为什么很难从移动设备上获取电子数据证据?

    "法拉第袋" 英文名为Faraday bag 移动设备是动态系统,在提取和分析电子数据证据时会给取证人员带来很多挑战.来自不同制造商的不同型号的手机的数量的快速增加使得难以开发用于 ...

最新文章

  1. 哺乳动物亚种在物种进化中至关重要
  2. 您对TOP Server的德语、中文和日语语言支持了解吗?(二)
  3. 微软687亿美元收购动视暴雪成第三大游戏公司,网友:米哈游只有收购索尼才能抗衡了...
  4. linux 检测 iptables 是否有重复的规则
  5. 怎么查找那台电脑中了ARP病毒
  6. 呵呵!Function构造函数
  7. java lang保_android – Gson中的RuntimeException解析JSON:无法调用受保护的java.lang.ClassLoader()而没有args...
  8. django 使用requests请求相关接口
  9. smarty的配置与安装
  10. poj 1502 单源最短路径
  11. Atitti  onvif 设备发现与原理
  12. Ubuntu下gcc安装及使用
  13. cad计算机忘了保存,cad图纸没保存怎么恢复(电脑突然断电,怎么找回未保存的CAD?)...
  14. 软件项目经理应具备的素质和条件_软件项目经理的素质能力要求
  15. e签宝:借助钉钉宜搭变革传统项目管理模式,交付效率显著提升
  16. 【Vue实战】使用vue-admin-template模板开发后台管理
  17. 谷歌浏览器安装vue-devtools插件
  18. Ubuntu16.04系统安装搜狗输入法详细教程
  19. mysql查询最近三个月数据方法
  20. 【Tableau 设计提示16】如何在 Tableau 中使用标记(批注)

热门文章

  1. vol.134 不是纹个皮皮虾你就能叫黑涩会了(嘉宾:索大)
  2. 8D质量问题分析与解决方法培训
  3. Android Preference 笔记
  4. Realflow制作融化特效
  5. ios 拆分字符串为数组
  6. (六)JAVA设计模式——原型设计模式案例实现
  7. 内容营销典范:奥巴马竞选演讲视频
  8. Orthos软件的使用
  9. coreldraw最新2023版本更新下载教程
  10. 自媒体们的新战场:搜狐新闻客户端