判断有没有 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获取移动网络信号强度的方法相关推荐

  1. Android 设备网络信息的获取(网络类型、网络强度、网络速度、代理情况)

    1.Android 设备网络类型的判断 判断网络类型主要还是依赖系统服务(系统为我们提供了大量的服务,以便我们能够查看到设备的一些信息),这里通过 Context.CONNECTIVITY_SERVI ...

  2. 网络信号简笔画图片大全,网络信号简笔画大全集

    5g信号塔怎么画 五金信号塔简笔画首先我们要根据他的形状来画出信号塔的样子,可以先画一个正方形,当着他这里主要的轮廓,然后用铅笔修出信号塔的分支,然后呢在信号塔的中间写上大大的舞姬两个字. 最后涂上颜 ...

  3. android wifi热点广播,在Android的WiFi热点获取无线网络的广播地址(Getting wifi broadcast...

    首先,你可以检查什么是您的IP地址: public InetAddress getIpAddress() { InetAddress inetAddress = null; InetAddress m ...

  4. 移动通信网络信号手机测试软件,手机信号强度怎么测试?

    原标题:手机信号强度怎么测试? 其实我们在上网的时候有一个信号强度的概念,信号强度就指的是手机网络信号强度,而手机上分的信号强度只是是打电话的通信强度和上网强度的总和.可能打电话的强度很高,但是网络强 ...

  5. android camera工程师,Android从Camera中获取图片的两种方法

    方法一: 此方法会由Camera直接产生照片回传给应用程序,但是返回的是压缩图片,显示不清晰 /**   启动Camera */ private void intentCamera(){ try { ...

  6. vb.net 教程 7-1 本地网络信息的获取 3 网络连接信息

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 通过IPGlobalProperties类可以获得网络连接的信息: 通过GetIPGlobalP ...

  7. 蓝牙、wifi、zigbee和lora、NB-lot,通话信号,网络信号4G

    目录 LoRa与NB-IOT资费对比 什么是LoRa LoRa的特性 什么是nb-iot 蓝牙.wifi.3G/4G.lora技术的对比 频段 2.4ghz频 蓝牙.wifi.zigbee和lora. ...

  8. 2023新华为OD机试题 - 计算网络信号(JavaScript) | 刷完必过

    华为Od必看博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 华为OD机试 全流程解析+经验分享,题型分 ...

  9. Android获取移动网络信号强度

    判断有没有SIM卡 获取移动网络的信号,一定要判断是否插了SIM卡,没插卡肯定是没法获取的 /*** 判断是否包含SIM卡** @return 状态*/public static boolean ha ...

最新文章

  1. 2022-2028中国橡胶衬里行业全景调研及竞争格局预测报告
  2. MYSQL转换编码的解决方法
  3. 在用dw.GetSqlSelect()获得到的Sql语句出现PBSELECT( VERSION的解决办法
  4. 了解Spring Web初始化
  5. 入行AI,你需要一本Python机器学习入门,赶紧收藏!
  6. java getreturntype_Java Method getGenericReturnType()方法
  7. Gzip,BZip2,Lzo,Snappy比较
  8. 推荐几个阿里、腾讯、美团大佬的公众号
  9. mysql与_mysql常见的运算符及使用
  10. C陷阱与缺陷-1理解函数申明
  11. 济南月薪一万是什么水平?
  12. 寻找发帖水王java_SWUST_OJ 水王发帖排序
  13. 服务器电脑用哪个系统好,电脑系统哪个好用?电脑系统有几种版本
  14. 长尾效应解析以及长尾效应在电商中的应用
  15. 微信小程序内跳转公众号
  16. 机器学习:回归分析—— 一元线性回归、多元线性回归的简单实现
  17. Python习题答案
  18. Android蓝牙初始名称修改(高通平台)
  19. 发现的一款很有个性的时钟插件
  20. 记一次小程序接口从云开发迁移至本地服务器的经验收获

热门文章

  1. 网络远程唤醒 WOL Magic Packet
  2. 可视化:Windows图形设备接口及绘图
  3. 长沙72岁老太弃12万元“启光”被银言劝阻
  4. [今日关注]鼓吹“互联网泡沫,到底为了什么”
  5. 大麦网抢票JavaScript代码,快速锁定你想要的时间和价格
  6. kvm虚拟机调节内存
  7. C语言 蓝桥杯 算法训练 ALGO-1003 礼物
  8. 单选框、复选框、下拉列表
  9. k均值聚类算法原理和(TensorFlow)实现
  10. phpstudy搭建nginx+php服务器显示php网页