Android telephony_android获取真实时间

Android telephony_android获取真实时间做一波获取手机卡LET的信息操作。看了一波源码写出来的一些东西首先需要的一些权限(危险权限动态获取一下,之前的里面有):<uses-permissionandroid:name=”android.permission.INTERNET”/><uses-permissionandroid:name=”android.permission.ACCESS_WIFI_ST…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

做一波获取手机卡LET的信息操作。看了一波源码写出来的一些东西

首先需要的一些权限(危险权限动态获取一下,之前的里面有):

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

//首先获取手机管理者类

tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

//获取设备编号

tm.getDeviceId();

//SIM卡提供商的ISO国家代码

tm.getSimCountryIso();

//获取SIM卡序列号

tm.getSimSerialNumber();

//获取网络运营商代号(MCC+MNC)

tm.getNetworkOperator();

//获取网络运营商名称

tm.getNetworkOperatorName();

//获取设备当前所在位置

tm.getCellLocation();

//获取cId,lac,psc,基于位置信息获取

CellLocation cellLocation = tm.getCellLocation();
if(cellLocation instanceof GsmCellLocation) {
    GsmCellLocation location = (GsmCellLocation)cellLocation;
    int cid = location.getCid();
    int lac = location.getLac();
    int psc = location.getPsc();
}

//获取手机类型

tm.getPhoneType();

//获取手机号码

tm.getLine1Number();

//获取国际长途区号

tm.getNetworkCountryIso();

//获取连接状态

tm.getDataState();

//获取网络类型(SDK版本29,才有5G,5G代号NR)

tm.getNetworkType();

//获取临近小区信息

之前的tm.getNeighboringCellInfo();这个方法在SDK29版本里删除掉了,所以得用另一种方法获取。

List<CellInfo> allCellInfo = tm.getAllCellInfo();
//集合返回的第一个数据,allCellInfo.get(0)就是当前小区的数据
        String ss = allCellInfo.toString();
        for(CellInfo cellInfo : allCellInfo){
            if(cellInfo instanceof CellInfoGsm) {
                CellInfoGsm infoGsm = (CellInfoGsm) cellInfo;
                CellIdentityGsm cellIdentity = infoGsm.getCellIdentity();
                int cid = cellIdentity.getCid();
                int lac = cellIdentity.getLac();
                int psc = cellIdentity.getPsc();
                int arfcn = cellIdentity.getArfcn();
                int rsrp = infoGsm.getCellSignalStrength().getDbm();
                str = "2G=====cid:"+cid+"=====lac:"+lac+"=====psc:"+psc+"=====arfcn:"+arfcn+"=====rsrp:"+rsrp+"\n";
            }else if(cellInfo instanceof CellInfoWcdma){
                CellInfoWcdma cellInfoWcdma = (CellInfoWcdma) cellInfo;
                int cid = cellInfoWcdma.getCellIdentity().getCid();
                int lac = cellInfoWcdma.getCellIdentity().getLac();
                int psc = cellInfoWcdma.getCellIdentity().getPsc();
                int rsrp = cellInfoWcdma.getCellSignalStrength().getDbm();
                serverCellInfo.asulevel = cellInfoWcdma.getCellSignalStrength().getAsuLevel();
                str = "3G=====cid:"+cid+"=====lac:"+lac+"=====psc:"+psc+"=====rsrp:"+rsrp+"\n";
            }else if(cellInfo instanceof CellInfoLte){
                CellInfoLte cellInfoLte = (CellInfoLte) cellInfo;
                int cid = cellInfoLte.getCellIdentity().getCi();
                int pci = cellInfoLte.getCellIdentity().getPci();
                int tac = cellInfoLte.getCellIdentity().getTac();
                int earfcn = cellInfoLte.getCellIdentity().getEarfcn();
                int rsrp = cellInfoLte.getCellSignalStrength().getRsrp();
                int rsrq = cellInfoLte.getCellSignalStrength().getRsrq();
//                Object rssi = cellInfoLte.getCellSignalStrength().getRssi();
                Object rssnr = cellInfoLte.getCellSignalStrength().getRssnr();
                Object bandwidth = cellInfoLte.getCellIdentity().getBandwidth();
                str = "4G=====cid:"+cid+"=====pci:"+pci+"=====tac:"+tac+"=====earfcn:"+earfcn+"=====rsrp:"+rsrp+"=====rsrq:"
                        +rsrq+"=====rssnr:"+rssnr+"=====bandWidth:"+bandwidth+"\n";

            }else if(cellInfo instanceof CellInfoNr){
                CellInfoNr cellInfoNr = (CellInfoNr) cellInfo;
                int asuLevel = cellInfoNr.getCellSignalStrength().getAsuLevel();
                int rsrp = cellInfoNr.getCellSignalStrength().getDbm();
                int level = cellInfoNr.getCellSignalStrength().getLevel();
                str = "5G=====asuLevel:"+asuLevel+"=====rsrp:"+rsrp+"=====level:"+level;
            }
        }

注:商用手机无法获得5G下的小区信息,可以检测到是NR(5G)网络,但是即使在5G情况下获得的仍是4G锚点小区的信息!!!想要获取需要跟手机厂家去购买获取Root过的手机。

 

//上面那个方法没法获取rssi,总是报错,获取sinr,cqi,rsrp,rssi等信息

//注册一个监听,利用反射拿到这些数据,在监听后拿数据即可

class MyPhoneStateListener extends PhoneStateListener {
    @Override
    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
        super.onSignalStrengthsChanged(signalStrength);
        if (phoneGeneralInfo.ratType == TelephonyManager.NETWORK_TYPE_LTE) {
            try {
                int rssi = (Integer) signalStrength.getClass().getMethod("getLteSignalStrength").invoke(signalStrength);
                int rsrp = (Integer) signalStrength.getClass().getMethod("getLteRsrp").invoke(signalStrength);
                int rsrq = (Integer) signalStrength.getClass().getMethod("getLteRsrq").invoke(signalStrength);
                int sinr = (Integer) signalStrength.getClass().getMethod("getLteRssnr").invoke(signalStrength);
                int cqi = (Integer) signalStrength.getClass().getMethod("getLteCqi").invoke(signalStrength);
            } catch (Exception e) {
                e.printStackTrace();
                return;
            }
        } else if (phoneGeneralInfo.ratType == TelephonyManager.NETWORK_TYPE_GSM) {
            try {
                serverCellInfo.rssi = signalStrength.getGsmSignalStrength();
                serverCellInfo.rsrp = (Integer) signalStrength.getClass().getMethod("getGsmDbm").invoke(signalStrength);
                serverCellInfo.asulevel = (Integer) signalStrength.getClass().getMethod("getAsuLevel").invoke(signalStrength);
            } catch (Exception e) {
                e.printStackTrace();
                return;
            }
        } else if (phoneGeneralInfo.ratType == TelephonyManager.NETWORK_TYPE_TD_SCDMA) {
            try {
                int rssi = (Integer) signalStrength.getClass().getMethod("getTdScdmaLevel").invoke(signalStrength);
                int rsrp = (Integer) signalStrength.getClass().getMethod("getTdScdmaDbm").invoke(signalStrength);
                int asulevel = (Integer) signalStrength.getClass().getMethod("getAsuLevel").invoke(signalStrength);
            } catch (Exception e) {
                e.printStackTrace();
                return;
            }
        }
    }
}

//监听使用方法,需要调用一下

MyPhoneStateListener myPhoneStateListener = new MyPhoneStateListener();
tm.listen(myPhoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185296.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Web漏洞扫描神器:xray

    Web漏洞扫描神器:xray一.Xray简介:xray是从长亭洞鉴核心引擎中提取出的社区版漏洞扫描神器,支持主动、被动多种扫描方式,自备盲打平台、可以灵活定义POC,功能丰富,调用简单,支持Windows/macOS/Linux多种操作系统,可以满足广大安全从业者的自动化Web漏洞探测需求二.下载地址:GitHub项目地址:https://github.com/chaitin/xray下载地址:https://download.xray.cool/xray/1.7.0三.版本说明:..

  • java oracle分页查询语句_oracle 分页语句

    java oracle分页查询语句_oracle 分页语句通过Debug调试,发现第一页查询到的数据没有问题,第二页时,查不到数据!第一页时,控制台打印的sql语句:SELECTOBJ_NAME,OBJ_ATTRIBUTE_NAME,ATTRIBUTE_TYPE,DES,STS,PRIORITYFROM(SELECTm.*,rownumrow_idFROM(SELECTOBJ_NAME,OBJ_ATTRIBUTE_NAME,ATT…

  • Codeforces Round #264 (Div. 2) C Gargari and Bishops 【暴力】

    Codeforces Round #264 (Div. 2) C Gargari and Bishops 【暴力】

  • nginx做正向代理_正向代理和反向代理图

    nginx做正向代理_正向代理和反向代理图环境在一个网络环境中,只有一台服务器可以使用互联网,而其他内网服务器都可以访问到这台互联网服务器,于是,我们可以通过nginx的正向代理访问互联网地址此处举例:互联网服务器IP:192.168.1.100内网服务器IP:192.168.1.101部署安装包:nginx-1.20.2.tar.gzproxy_connect模块:gitclonehttps://github.com/chobits/ngx_http_proxy_connect_module.git操…

    2022年10月21日
  • Linux 搭建 Kafka教程[通俗易懂]

    Linux 搭建 Kafka教程[通俗易懂]把kafka解压到linux去配置文件中配置环境配置kafka文件内容进入kafka/config目录修改server.properties文件修改broker.id=id里面的数值不可以重复同时添加主机的ip和端口host.name=192.168.10.101listeners=PLAINTEXT://192.168.10.101:9092在下面找到log.dirs修改日志的地址修改为我们三台机器ip地址zookeeper.connect=localhost:21

    2022年10月16日
  • windows连接linux共享文件夹,windows访问linux共享文件夹

    windows连接linux共享文件夹,windows访问linux共享文件夹1.windows的网上邻居,是通过smb协议来共享信息的,如果需要给访问linux上的共享目录被windows访问到,需要linux有smb协议sudoapt-getinstallsamba#安装samba服务sudoapt-getinstallsmbfs#安装smbfs服务2.安装好服务后,启动服务harvey@harvey:/etc/samba$servicesmbdr…

    2022年10月24日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号