Android获取各种设备信息

本文详细介绍了如何在Android平台上获取各种设备信息,包括硬件和软件属性,以图表形式展示。
摘要由CSDN通过智能技术生成

Android获取各种设备信息

Android获取各种设备信息,如下图:

public class EquipmentInfoCollection {
    TelephonyManager telephonyManager;

    /**
     * 设备信息PO
     */
    private EquipmentPO equipment;

    public EquipmentPO getEquipmentInfo(Context context) {
        telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        equipment = new EquipmentPO();
        //手机品牌
        equipment.setBrand(Build.BRAND);
        //越狱标识
        equipment.setBreakFlag(isRoot() + "");
        //手机运营商
        equipment.setCarrier(getProvidersName(telephonyManager));
        //手机IP
        equipment.setIp(getIPAddress(context));
        //媒体接入控制(MAC)地址
        equipment.setMac(getMacAddress(context));
        //运营商国家
        equipment.setCountry(telephonyManager.getNetworkCountryIso());
        //CPU支持的指令集
        equipment.setCpuABI(getCpuAbi());
        //CPU数量
        equipment.setCpuCount(getCPUNumCores() + "");
        //CPU型号
        equipment.setCpuHardware(getCpuName());
        //CPU序列
        equipment.setCpuSerial(getCPUSerial());

        //CPU速度
        String minCpuFreq = getMinCpuFreq();
        minCpuFreq = minCpuFreq.length() != 0 ? minCpuFreq : "0";
        String maxCpuFreq = getMaxCpuFreq();
        maxCpuFreq = maxCpuFreq.length() != 0 ? maxCpuFreq : "0";
        String curCpuFreq = getCurCpuFreq();
        curCpuFreq = curCpuFreq.length() != 0 ? curCpuFreq : "0";
        equipment.setCpuSpeed("{'cpuSpeed': { 'min':'" + minCpuFreq + "' , 'max':'" + maxCpuFreq + "' ,'cur':'" + curCpuFreq + "'}}");
        //手机设备ID
        equipment.setDeviceId(getUDID(context));
        //国际移动用户ID
        equipment.setImsi(telephonyManager.getSubscriberId());
        //机型
        equipment.setModel(Build.MODEL);
        //网络类型
        equipment.setNetworkType(getNetworkType(context));
        //屏幕分辨率
        equipment.setResolution(getScreenResolution(context));
        //模拟器标识
        equipment.setSimulator(isEmulator(context, telephonyManager));
        //系统总内存
        equipment.setTotalStorage(getTotalExternalMemorySize());
        //系统剩余内存
        equipment.setLeftDisk(getAvailableExternalMemorySize());
        //SD卡总内存
        equipment.setTotalMemory(getTotalInternalMemorySize());

        //SD卡可用内存;
        equipment.setLeftMemory(getAvailableInternalMemorySize());
        /**获取系统触摸屏的触摸方式*/
        equipment.setTouchScreen("");
        //输入法类型
        equipment.setInputMethod(getInputMethod(context));
        /**输入法版本*/
        equipment.setInputMethodVersion("");
        //时区
        equipment.setTimeZone(getCurrentTimeZone());
        //语言
        equipment.setLanguage(Locale.getDefault().getLanguage());
        //获取手机SIM序列号
        equipment.setSim(telephonyManager.getSimSerialNumber());
        String meid = "";
        String imei = "";
        if (Build.VERSION.SDK_INT < 21) {
            //如果获取系统的IMEI/MEID,14位代表meid 15位是imei
            if (Find_IMEI_MEID.getNumber(context, telephonyManager) == 14) {
                //meid
                meid = Find_IMEI_MEID.getImeiOrMeid(context, telephonyManager);
            } else if (Find_IMEI_MEID.getNumber(context, telephonyManager) == 15) {
                //imei1
                imei = Find_IMEI_MEID.getImeiOrMeid(context, telephonyManager);
            }
            // 21版本是5.0,判断是否是5.0以上的系统  5.0系统直接获取IMEI1,IMEI2,MEID
        } else if (Build.VERSION.SDK_INT >= 21) {
            //meid
            meid = Find_IMEI_MEID.getMeid(context, telephonyManager);
            //imei
            imei = Find_IMEI_MEID.getImei(context, telephonyManager);
        }
        //获取GSM手机的基带串号
        equipment.setImei(imei);
        /**获取CDMA手机的用户身份号  和上一个属性用同一个获取方法*/
        equipment.setMeid(meid);
        //默认浏览器
        equipment.setDefaultBrowser(getBrowserApp(context));

        //本机手机号
        equipment.setPhoneNum(telephonyManager.getLine1Number());
        //照片总数
        equipment.setDevice_pic_cnt(getPhotoNumber(context));
        //剩余电量
        equipment.setDevice_battery_level(getDevice_battery_level(context));
        return equipment;
    }

    /**
     * 判断当前手机是否有ROOT权限
     *
     * @return 0代表未越狱 1代表已越狱
     */
    private int isRoot() {
        int result = 0;
        try {
            if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exists())) {
                result = 0;
            } else {
                result = 1;
            }
            Log.d("EC.isROOT", "result = " + result);
        } catch (Exception e) {
            Log.e("isRoot", e.getMessage());
        }
        return result;
    }

    /**
     * 返回手机运营商名称
     *
     * @param telephonyManager
     * @return
     */
    private String getProvidersName(TelephonyManager telephonyManager) {
        String ProvidersName = null;
        String IMSI = telephonyManager.getSubscriberId();
        if (IMSI == null) {
            return "unknow";
        }
        if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
            ProvidersName = "中国移动";
        } else if (IMSI.startsWith("46001")) {
            ProvidersName = "中国联通";
        } else if (IMSI.startsWith("46003")) {
            ProvidersName = "中国电信";
        }
        return ProvidersName;
    }

    /**
     * 获取手机IP地址
     *
     * @param context
     * @return
     */
    private String getIPAddress(Context context) {
        NetworkInfo info = ((ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
        if (info != null && info.isConnected()) {
            //当前使用2G/3G/4G网络
            if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
                try {
                    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
                        NetworkInterface intf = en.nextElement();
                        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                            InetAddress inetAddress = enumIpAddr.nextElement();
                            if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
                                return inetAddress.getHostAddress();
                            }
                        }
                    }
                } catch (SocketException e) {
                    Log.e("EquipmentInfoCollection", e.getMessage());
                }
                //当前使用无线网络
            } 
Android 获取设备信息是一种常见的操作,通过获取设备信息,开发者可以了解到设备的各种属性,并根据这些信息进行相应的处理。 在 Android 平台上,获取设备信息可以通过调用系统提供的 API 实现。以下是一个获取设备信息的简单示例代码: ``` import android.os.Build; public class DeviceInfoDemo { public static void main(String[] args) { String deviceModel = Build.MODEL; // 获取设备型号 String deviceManufacturer = Build.MANUFACTURER; // 获取设备制造商 String deviceBrand = Build.BRAND; // 获取设备品牌 String deviceType = Build.TYPE; // 获取设备类型 String deviceOSVersion = Build.VERSION.RELEASE; // 获取操作系统版本号 System.out.println("设备型号:" + deviceModel); System.out.println("设备制造商:" + deviceManufacturer); System.out.println("设备品牌:" + deviceBrand); System.out.println("设备类型:" + deviceType); System.out.println("操作系统版本号:" + deviceOSVersion); } } ``` 以上代码使用了`Build`类提供的一些常用属性来获取设备信息,并将其打印输出。开发者可以根据实际需求获取更多的设备信息,例如 MAC 地址、IMEI 号等。 需要注意的是,为了使用`Build`类中的属性,需要在项目的`AndroidManifest.xml`文件中添加相应的权限声明。例如获取设备IMEI 号需要`android.permission.READ_PHONE_STATE`权限。 通过上述示例代码,开发者可以轻松获取 Android 设备的各种信息,这些信息对于开发、统计、调试等方面非常有用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值