zoukankan      html  css  js  c++  java
  • 转:Delphi D10.X安卓APP开发中获取硬件信息及手机号

    TJBuild
    这里面包括了较多的设备信息

    BOARD 主板
    BOOTLOADER 系统启动程序版本号
    BRAND 系统定制商
    CPU_ABI cpu指令集
    CPU_ABI2 cpu指令集2
    DEVICE 设备驱动名称
    DISPLAY 显示屏参数,设备显示器的版本包(在系统设置中显示为版本号)和ID一样
    FINGERPRINT 识别码(这个码不是唯一码)通常是一串参数的组合,没太大意义
    HARDWARE 硬件名称
    HOST设备主机地址
    MANUFACTURER 硬件制造商
    MODEL 版本即最终用户可见的名称
    PRODUCT 整个产品的名称
    RADIO 无线电固件版本:使用**getRadioVersion()**代替。
    SERIAL 硬件序列号
    TAGS 描述build的标签,如未签名,debug等等。
    TIME 系统编译时间
    TYPE 编译的类型
    USER 固定的,没意义

        // 手机型号(MI XXX)
        Memo1.Lines.Add('手机型号(MI XXX):' + JStringToString(TJBuild.JavaClass.MODEL));
        // 设备基板名称
        Memo1.Lines.Add('设备基板名称:' + JStringToString(TJBuild.JavaClass.BOARD));
        // 系统启动程序版本
        Memo1.Lines.Add('系统启动程序版本:' + JStringToString
          (TJBuild.JavaClass.BOOTLOADER));
        // 系统定制商
        Memo1.Lines.Add('设备品牌:' + JStringToString(TJBuild.JavaClass.BRAND));
        // cpu指令集
        Memo1.Lines.Add('cpu指令集:' + JStringToString(TJBuild.JavaClass.CPU_ABI));
        // cpu指令集2
        Memo1.Lines.Add('cpu指令集2:' + JStringToString(TJBuild.JavaClass.CPU_ABI2));
        // 设备驱动名称
        Memo1.Lines.Add('设备驱动名称:' + JStringToString(TJBuild.JavaClass.DEVICE));
        // 设备显示的版本包(在系统设置中显示为版本号)和ID一样
        Memo1.Lines.Add('显示屏参数:' + JStringToString(TJBuild.JavaClass.DISPLAY));
        // 设备制造商
        Memo1.Lines.Add('设备制造商:' + JStringToString(TJBuild.JavaClass.MANUFACTURER));
        // 无线电固件版本
        Memo1.Lines.Add('无线电固件版本:' + JStringToString
          (TJBuild.JavaClass.getRadioVersion));
        // 设备的唯一标识。由设备的多个信息拼接合成。 注意,这个码不是唯一 码
        Memo1.Lines.Add('硬件识别码(这个码不是唯一 码):' +
          JStringToString(TJBuild.JavaClass.FINGERPRINT));
    ————————————————
    版权声明:本文为CSDN博主「tanqth」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/tanqth/java/article/details/104779089

    TelephonyManager

    这部分包括了手机信息如卡槽信息、手机卡信息、运营商信息、网络信息等等,演示里也只列了一部分主要内容。

        TelephonyServiceNative := TAndroidHelper.Context.getSystemService
          (TJContext.JavaClass.TELEPHONY_SERVICE);
        if Assigned(TelephonyServiceNative) then
        begin
          Memo1.Lines.Add('======================');
          try
            TelephonyManager := TJTelephonyManager.Wrap
              ((TelephonyServiceNative as ILocalObject).GetObjectID);
            // 手机卡槽数
            vPhoneCount := TelephonyManager.getPhoneCount;
            Memo1.Lines.Add('卡槽数:' + vPhoneCount.ToString);
            // 插卡数
            vSubscriptionManager := TJSubscriptionManager.JavaClass.from
              (TAndroidHelper.Context);
            vSubManagerCoun :=
              vSubscriptionManager.getActiveSubscriptionInfoCount();
            Memo1.Lines.Add('插卡数:' + vSubManagerCoun.ToString);
    
            // 设备ID
            Memo1.Lines.Add('DeviceId_1:' + JStringToString
              (TelephonyManager.getDeviceId(0)));
            if vPhoneCount > 1 then
              Memo1.Lines.Add('DeviceId_2:' +
                JStringToString(TelephonyManager.getDeviceId(1)));
            // 硬件Imei
            Memo1.Lines.Add('Imei_1:' + JStringToString
              (TelephonyManager.getImei(0)));
            if vPhoneCount > 1 then
              Memo1.Lines.Add('Imei_2:' + JStringToString
                (TelephonyManager.getImei(1)));
            // 硬件Meid
            try
              Memo1.Lines.Add('Meid_1:' + JStringToString
                (TelephonyManager.getMeid(0)));
            except
              on E: Exception do
            end;
    
            try
              if vPhoneCount > 1 then
                Memo1.Lines.Add('Meid_2:' + JStringToString
                  (TelephonyManager.getMeid(1)));
            except
              on E: Exception do
            end;
    
            // SubscriberId
            Memo1.Lines.Add('SubscriberId(IMSI号):' +
              JStringToString(TelephonyManager.getSubscriberId));
            // Line1Number
            Memo1.Lines.Add('Line1Number:' + JStringToString
              (TelephonyManager.getLine1Number));
            //分别取各卡槽信息
            for I := 0 to vSubManagerCoun-1 do
            begin
            vSubscriptionInfo:=vSubscriptionManager.getActiveSubscriptionInfo(I+1);
            Memo1.Lines.Add(I.ToString+'手机号: ' + JStringToString
              (vSubscriptionInfo.getNumber));
            Memo1.Lines.Add(I.ToString+'使用卡槽: ' + (vSubscriptionInfo.getSimSlotIndex+1).ToString);
            Memo1.Lines.Add(I.ToString+'运营商: ' + JCharSequenceToStr
              (vSubscriptionInfo.getCarrierName));
            end;
    
          except
          end;
        end;
    ————————————————
    版权声明:本文为CSDN博主「tanqth」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/tanqth/java/article/details/104779089
  • 相关阅读:
    强化学习基础:蒙特卡罗和时序差分
    强化学习基础:基本概念和动态规划
    EM算法和高斯混合模型GMM介绍
    使用Tensorflow搭建自编码器(Autoencoder)
    神经网络介绍:梯度下降和正则化
    神经网络介绍:算法基础
    K均值聚类和DBSCAN介绍
    Zabbix安装过程中遇到的问题
    Docker容器操作基础命令(二)
    Docker的安装及基本用法(一)
  • 原文地址:https://www.cnblogs.com/timba1322/p/12681573.html
Copyright © 2011-2022 走看看