博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android设备信息、感应器检测
阅读量:6832 次
发布时间:2019-06-26

本文共 5698 字,大约阅读时间需要 18 分钟。

近日产品已经上线,开始有时间来做自己的事情,于是就开始学习和巩固一些以前用过的或者学过的技术。昨天写了一个检测Android设备的序列号和IMEI以及感应器等等的一个Demo来跟大家分享一下。

在开发中经常要对设备进行识别和唯一标识。我们用到了安卓设备的序列号和设备的MAC号。

  一、首先是获取设备的序列号,在开发的时候我们可以这样来获得。

String serialName = android.os.Build.SERIAL;

  也可以用下面的一个方法来获取设备的序列号

public static String getSerialNumber() {        String serial = null;        try {            Class
c = Class.forName("android.os.SystemProperties"); Method get = c.getMethod("get", String.class); serial = (String) get.invoke(c, "ro.serialno"); System.out.println(serial); } catch (Exception ignored) { } return serial; }

   二、 其次是获取设备的MAC

String getMac() {        String macSerial = null;        String str = "";        try {            Process pp = Runtime.getRuntime().exec(                    "cat /sys/class/net/wlan0/address ");            InputStreamReader ir = new InputStreamReader(pp.getInputStream());            LineNumberReader input = new LineNumberReader(ir);            for (; null != str;) {                str = input.readLine();                if (str != null) {                    macSerial = str.trim();// 去空格                    break;                }            }        } catch (IOException ex) {            // 赋予默认值            ex.printStackTrace();        }        return macSerial;    }

  三、获取设备内部的所有传感器:在Android的API里面包括的感应器有  

TYPE_ACCELEROMETER:加速度传感器TYPE_GRAVITY:重力传感器TYPE_GYROSCOPE:陀螺仪传感器TYPE_LIGHT:环境光线传感器TYPE_LINEAR_ACCELERATION:线性加速度传感器TYPE_MAGNETIC_FIELD:电磁场传感器TYPE_ORIENTATION:方向传感器TYPE_PRESSURE:压力传感器TYPE_PROXIMITY:距离传感器TYPE_ROTATION_VECTOR:旋转向量传感器TYPE_TEMPERATURE:温度传感器

  下面是获取设备传感器的代码

// 从系统服务中获得传感器管理器        SensoraManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);// 从传感器管理器中获得全部的传感器列表        List
sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);//获取所有的感应器 List
allSensors = sm.getSensorList(Sensor.TYPE_ALL);

  然后是对所有的感应器进行一个遍历,并对感应器进行区分

// 显示有多少个传感器        mTvSensor.setText("经检测该手机有" + allSensors.size() + "个传感器,他们分别是:\n");        // 显示每个传感器的具体信息        for (Sensor s : allSensors) {            String tempString = "\n" + "  设备名称:" + s.getName() + "\n"                    + "  设备版本:" + s.getVersion() + "\n" + "  供应商:"                    + s.getVendor() + "\n";            switch (s.getType()) {            case Sensor.TYPE_ACCELEROMETER:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 加速度传感器accelerometer" + tempString);                break;            case Sensor.TYPE_GRAVITY:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 重力传感器gravity API 9" + tempString);                break;            case Sensor.TYPE_GYROSCOPE:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 陀螺仪传感器gyroscope" + tempString);                break;            case Sensor.TYPE_LIGHT:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 环境光线传感器light" + tempString);                break;            case Sensor.TYPE_LINEAR_ACCELERATION:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 线性加速器LINEAR_ACCELERATION API 9" + tempString);                break;            case Sensor.TYPE_MAGNETIC_FIELD:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 电磁场传感器magnetic field" + tempString);                break;            case Sensor.TYPE_ORIENTATION:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 方向传感器orientation" + tempString);                break;            case Sensor.TYPE_PRESSURE:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 压力传感器pressure" + tempString);                break;            case Sensor.TYPE_PROXIMITY:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 距离传感器proximity" + tempString);                break;            case Sensor.TYPE_ROTATION_VECTOR:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 旋转向量ROTATION" + tempString);                break;            case Sensor.TYPE_TEMPERATURE:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 温度传感器temperature" + tempString);                break;            default:                mTvSensor.setText(mTvSensor.getText().toString() + s.getType()                        + " 未知传感器" + tempString);                break;            }        }

  四、获取设备的存储空间

//获取设备总存储空间public static long getSDCardSize(){        File path =Environment.getExternalStorageDirectory();        StatFs statFs=new StatFs(path.getPath());        //获得单个数据块的大小        long blockSize=statFs.getBlockSize();        //获得全部数据块的个数        long allBlock=statFs.getBlockCount();        return (allBlock*blockSize)/1024/1024/1024;    }//获取设备可用的存储空间        public static long getVialableSDCardSize(){        File path =Environment.getExternalStorageDirectory();        StatFs statFs=new StatFs(path.getPath());        //获得单个数据块的大小        long blockSize=statFs.getBlockSize();        //获得可用数据块的个数        long allBlock=statFs.getAvailableBlocks();        return (allBlock*blockSize)/1024/1024/1024;    }

  五、获取设备的时间

public static String systemTime(){        Time time=new Time();        time.setToNow();        return time.year+"年"+time.month+"月"+time.monthDay+"日"+" 星期"+time.weekDay;    }

 

转载于:https://www.cnblogs.com/BobAdmin/p/4921680.html

你可能感兴趣的文章
我的友情链接
查看>>
如何设计Android App测试用例
查看>>
dns服务器在做nslookup测试的时候,出现dns timeout 2 seconds的错误解释
查看>>
定义封装的类类型 笔记
查看>>
行业数据获取
查看>>
SpringMvc+Hibernate+Mysql保存表情字符(昵称)到数据库报错的问题?
查看>>
微软2016校园招聘在线笔试 B Professor Q's Software [ 拓扑图dp ]
查看>>
TinyUI组件开发示例
查看>>
qt添加图标
查看>>
字节流高效缓冲区文件复制
查看>>
ColorMatrixColorFilter颜色过滤(离线用户的灰色头像处理)
查看>>
react:reducer-creator
查看>>
MyEclipse 总是弹出“multiple Errors have Occurred”
查看>>
sas实例合集
查看>>
C语言解释器的实现--存储结构(一)
查看>>
Java Eclipse常规设置
查看>>
ios官方菜单项目重点剖析附项目源码
查看>>
构建javaweb项目
查看>>
MVC5学习笔记
查看>>
大大大大板子
查看>>