android 网络信号,Android获取移动网络信号强度的方法
判断有没有 SIM 卡
获取移动网络的信号,一定要判断是否插了 SIM 卡,没插卡肯定是没法获取的
/**
* 判断是否包含SIM卡
*
* @return 状态
*/
public static boolean hasSimCard(Context context) {
TelephonyManager telMgr = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
int simState = telMgr.getSimState();
boolean result = true;
switch (simState) {
case TelephonyManager.SIM_STATE_ABSENT:
case TelephonyManager.SIM_STATE_UNKNOWN:
result = false; // 没有SIM卡
break;
}
return result;
}
获取信号强度
如果插了 SIM 卡,就可以通过下边方法来获取移动网络的信号强度(单位 dBM),使用的是 TelephonyManager 来监听
private void getMobileNetworkSignal() {
if (!PhoneUtils.hasSimCard(mcontext)) {
logger.info("getMobileNetworkSignal: no sim card");
return;
}
TelephonyManager mTelephonyManager = (TelephonyManager) BaseApplication.getAppContext().getSystemService(Context.TELEPHONY_SERVICE);
if (mTelephonyManager != null) {
mTelephonyManager.listen(new PhoneStateListener() {
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
int asu = signalStrength.getGsmSignalStrength();
int lastSignal = -113 + 2 * asu;
if (lastSignal > 0) {
mobileNetworkSignal = lastSignal + "dBm";
}
logger.info("Current mobileNetworkSignal:" + lastSignal + " dBm");
}
}, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
}
也可以添加网络类型的判断,来获取是何种网络的信号强度
int netWorkType = getNetWorkType(mContext);
switch (netWorkType) {
case NETWORKTYPE_WIFI:
mTextView.setText("当前网络为wifi,信号强度为:" + gsmSignalStrength);
break;
case NETWORKTYPE_2G:
mTextView.setText("当前网络为2G移动网络,信号强度为:" + gsmSignalStrength);
break;
case NETWORKTYPE_4G:
mTextView.setText("当前网络为4G移动网络,信号强度为:" + gsmSignalStrength);
break;
case NETWORKTYPE_NONE:
mTextView.setText("当前没有网络,信号强度为:" + gsmSignalStrength);
break;
case -1:
mTextView.setText("当前网络错误,信号强度为:" + gsmSignalStrength);
break;
}
用到的获取网络类型的方法:
public static int getNetWorkType(Context context) {
int mNetWorkType = -1;
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
String type = networkInfo.getTypeName();
if (type.equalsIgnoreCase("WIFI")) {
mNetWorkType = NETWORKTYPE_WIFI;
} else if (type.equalsIgnoreCase("MOBILE")) {
return isFastMobileNetwork(context) ? NETWORKTYPE_4G : NETWORKTYPE_2G;
}
} else {
mNetWorkType = NETWORKTYPE_NONE;//没有网络
}
return mNetWorkType;
}
/**
* 判断网络类型
*/
private static boolean isFastMobileNetwork(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE) {
return true;
}
return false;
}
最后添加必要权限即可
以上就是Android获取移动网络信号强度的方法的详细内容,更多关于Android获取网络信号强度的资料请关注脚本之家其它相关文章!
android 网络信号,Android获取移动网络信号强度的方法相关推荐
- Android 设备网络信息的获取(网络类型、网络强度、网络速度、代理情况)
1.Android 设备网络类型的判断 判断网络类型主要还是依赖系统服务(系统为我们提供了大量的服务,以便我们能够查看到设备的一些信息),这里通过 Context.CONNECTIVITY_SERVI ...
- 网络信号简笔画图片大全,网络信号简笔画大全集
5g信号塔怎么画 五金信号塔简笔画首先我们要根据他的形状来画出信号塔的样子,可以先画一个正方形,当着他这里主要的轮廓,然后用铅笔修出信号塔的分支,然后呢在信号塔的中间写上大大的舞姬两个字. 最后涂上颜 ...
- android wifi热点广播,在Android的WiFi热点获取无线网络的广播地址(Getting wifi broadcast...
首先,你可以检查什么是您的IP地址: public InetAddress getIpAddress() { InetAddress inetAddress = null; InetAddress m ...
- 移动通信网络信号手机测试软件,手机信号强度怎么测试?
原标题:手机信号强度怎么测试? 其实我们在上网的时候有一个信号强度的概念,信号强度就指的是手机网络信号强度,而手机上分的信号强度只是是打电话的通信强度和上网强度的总和.可能打电话的强度很高,但是网络强 ...
- android camera工程师,Android从Camera中获取图片的两种方法
方法一: 此方法会由Camera直接产生照片回传给应用程序,但是返回的是压缩图片,显示不清晰 /** 启动Camera */ private void intentCamera(){ try { ...
- vb.net 教程 7-1 本地网络信息的获取 3 网络连接信息
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 通过IPGlobalProperties类可以获得网络连接的信息: 通过GetIPGlobalP ...
- 蓝牙、wifi、zigbee和lora、NB-lot,通话信号,网络信号4G
目录 LoRa与NB-IOT资费对比 什么是LoRa LoRa的特性 什么是nb-iot 蓝牙.wifi.3G/4G.lora技术的对比 频段 2.4ghz频 蓝牙.wifi.zigbee和lora. ...
- 2023新华为OD机试题 - 计算网络信号(JavaScript) | 刷完必过
华为Od必看博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 华为OD机试 全流程解析+经验分享,题型分 ...
- Android获取移动网络信号强度
判断有没有SIM卡 获取移动网络的信号,一定要判断是否插了SIM卡,没插卡肯定是没法获取的 /*** 判断是否包含SIM卡** @return 状态*/public static boolean ha ...
最新文章
- 2022-2028中国橡胶衬里行业全景调研及竞争格局预测报告
- MYSQL转换编码的解决方法
- 在用dw.GetSqlSelect()获得到的Sql语句出现PBSELECT( VERSION的解决办法
- 了解Spring Web初始化
- 入行AI,你需要一本Python机器学习入门,赶紧收藏!
- java getreturntype_Java Method getGenericReturnType()方法
- Gzip,BZip2,Lzo,Snappy比较
- 推荐几个阿里、腾讯、美团大佬的公众号
- mysql与_mysql常见的运算符及使用
- C陷阱与缺陷-1理解函数申明
- 济南月薪一万是什么水平?
- 寻找发帖水王java_SWUST_OJ 水王发帖排序
- 服务器电脑用哪个系统好,电脑系统哪个好用?电脑系统有几种版本
- 长尾效应解析以及长尾效应在电商中的应用
- 微信小程序内跳转公众号
- 机器学习:回归分析—— 一元线性回归、多元线性回归的简单实现
- Python习题答案
- Android蓝牙初始名称修改(高通平台)
- 发现的一款很有个性的时钟插件
- 记一次小程序接口从云开发迁移至本地服务器的经验收获