android 双卡开发获取sim卡默认数据卡,获取sim卡信息,sim1卡,sim2卡 2G/3G/4G信号强度
1:默认数据卡
private int getDefalutDataID(){SubscriptionManager subscriptionManager = (SubscriptionManager)getContext().getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); int subscriberId = 0; if (Build.VERSION.SDK_INT > 24) {subscriberId = SubscriptionManager.getDefaultDataSubscriptionId(); }else{try {Class cls = SubscriptionManager.class.getClass(); Method method = cls.getDeclaredMethod("getDefaultDataSubId"); subscriberId = (Integer) method.invoke(subscriptionManager); }catch (Exception e){e.printStackTrace();}}return subscriberId; }
返回值1是卡一返回2是卡2,24以上不需要使用反射
2:获取sim卡信息,1中获取到的sim卡subId为参数,获取对应的SubscriptionInfo实例,可以获取到sim卡的信息
private SubscriptionInfo getSIMInfo(int subId){SubscriptionManager subscriptionManager = (SubscriptionManager)getContext().getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); List<SubscriptionInfo> infos = subscriptionManager.getActiveSubscriptionInfoList(); SubscriptionInfo infoRet = null; for (SubscriptionInfo info:infos){Log.e("xubaipei",info.toString()); if (info.getSubscriptionId() == subId){infoRet = info; }}return infoRet; }
3:sim1,sim2监听信号强度
new 出2个PhoneStateListener实例来监听sim卡1和卡2,new出的mListener
通过反射改变实例内的mSubId 属性来切换监听的sim卡信号强度,subscriberId 为1是卡1,2是卡2 ,一般是函数getDefaultDataId()中获取的默认数据卡
try {Field field = PhoneStateListener.class.getDeclaredField("mSubId"); field.setAccessible(true); field.setInt(mListener,subscriberId); }catch (Exception e){e.printStackTrace(); }
可以通过获取signalStrength中toString 的值来获取所有的信号强度,也可以像我这样获取所有的CellInfo来逐个判断
2G,3G信号,2G/3G信号强度符合dbm = --113 + 2*asu;4G信号强度符合asu = 140 +dmb
mListener = new PhoneStateListener() {@Override public void onSignalStrengthsChanged(SignalStrength signalStrength) {if (isHidden()) {return; }int level = 0; int dbm = 0; int asu = 0; List<CellInfo> infos = telManager.getAllCellInfo(); if (infos == null){return;}for (CellInfo info :infos){if (!info.isRegistered()){continue; }if (info instanceof CellInfoLte){//4G CellInfoLte ff = (CellInfoLte)info; dbm = ff.getCellSignalStrength().getDbm(); level = ff.getCellSignalStrength().getLevel(); asu = 140 + dbm; }else if (info instanceof CellInfoWcdma){//3G CellInfoWcdma ff = (CellInfoWcdma)info; dbm = ff.getCellSignalStrength().getDbm(); level = ff.getCellSignalStrength().getLevel(); asu = (dbm + 113) / 2; }else if (info instanceof CellInfoGsm){//2G CellInfoGsm ff = (CellInfoGsm)info; dbm = ff.getCellSignalStrength().getDbm(); level = ff.getCellSignalStrength().getLevel(); asu = (dbm + 113) / 2; }mSignalView.setProgress(level * 25); if (dbm == 0){return; }mSignalText.setText(String.valueOf(asu)); }} };
开始监听信号:
telManager.listen(mListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
android 双卡开发获取sim卡默认数据卡,获取sim卡信息,sim1卡,sim2卡 2G/3G/4G信号强度相关推荐
- 检查SIM卡当前环境是否支持2G/3G/4G/5G
我的是小米手机,就以小米为例子 设置 移动网络SIM卡信息 网络类型选择 选择2G/3G/4G/5G
- android 判断2g 3g 4g,如何确定网络类型是2G,3G还是4G
根据此处的Android开发人员文档和Wikipedia链接,我给出了注释并定义了网络类型.请检查注释中的链接. 您可以使用getNetworkType获取网络类型. public class Com ...
- Android 判断用户2G/3G/4G移动数据网络
2019独角兽企业重金招聘Python工程师标准>>> Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的 ...
- (转)Android 判断用户2G/3G/4G移动数据网络
在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需(要根据用户当前网络情况来做一些调整的,也可以在 App 的设置模块里,让用户自己选择,在 2G ...
- QCSuper:在高通手机猫上捕获无线2G/3G/4G数据包
QCSuper是一种基于高通(Qualcomm)手机和调制解调器(俗称"猫")通信的工具,可以捕获原始的2G/3G/4G无线电帧等数据内容.它允许你使用已root的安卓手机,usb ...
- 在高通手机猫上捕获无线2G/3G/4G数据包的工具QCSuper
QCSuper是一种基于高通(Qualcomm)手机和调制解调器(俗称"猫")通信的工具,可以捕获原始的2G/3G/4G无线电帧等数据内容.它允许你使用已root的安卓手机,usb ...
- 联发科(MTK)、高通(Qualcomm)2G/3G/4G/5G模块定制与开发服务
新移科技拥有多年联发科(MTK),高通(Qualcomm)2G/3G/4G系列平台开发经验,专注于无线通信方案软硬件开发.在持续推出标准核心板及开发套件的同时,为满足客户个性化项目需求,提供定制开发服 ...
- 【Android FFMPEG 开发】FFMPEG 解码 AVPacket 数据到 AVFrame ( AVPacket-解码器 | 初始化 AVFrame | 解码为 AVFrame 数据 )
文章目录 I . FFMPEG 解码 AVPacket 数据到 AVFrame 前置操作 II . FFMPEG 解码 AVPacket 数据到 AVFrame 流程 III . FFMPEG 发送 ...
- php获取post表单数据_PHP获取POST表单数据
php获取post表单数据,这是再正常不过的场景了,这里有几点需要注意,网上也都有提到.别人总结的毕竟不是自己的,为了体会这些注意点,我自己在本地搭建一个web application, 然后去验证. ...
最新文章
- JS中字符串的相关操作
- 在 Linux 系统中安装Load Generator ,并在windows 调用
- Web项目MySQL配置文件运维
- HDU4006(The kth great number)
- 腾讯回应发布虚假广告被罚20万;苹果客服回应iPhone 12屏幕发绿;Chrome 87 正式版发布|极客头条...
- 体检结果(2018年10月,胃肠镜)
- 有效解决RaycastTarget勾选过多的烦恼
- leetcode 859. Buddy Strings
- 高等代数——大学高等代数课程创新教材(丘维声)——2.2笔记+习题
- OpenG 分化基础知识
- python使用win32com复制word的某一页然后粘贴到新的word页面中
- iOS打开应用提示未受信任的企业级开发者
- 服务器80端口找不到,如何查询服务器80端口被关闭
- 微信小程序 教你如何复制页面路径 (以及京东、虎牙、苏宁、拼多多、等大厂的加密路径详解)(多图!!!)
- 如何在服务器上快速克隆虚拟机,制作虚拟机模板快速克隆Linux虚拟机
- 人工智能数学基础---不定积分3:分部积分法
- stm32 printf打印出错,信息不完整解决办法
- 巴西龟饲养日志----巴西龟肺炎治疗情况
- 软件测试公司折扣政策,@软件企业看,这些税收优惠政策请收下
- 【Python爬虫】第一课 Python爬虫环境与爬虫简介