您的位置:首页 > 移动开发 > Android开发

Android之传感器使用总结

2015-11-26 09:24 861 查看
Android中使用传感器是非常简单的,首先获取到一个SensorManager对象,然后使用SensorManager对象获取到具体的传感器,给SensorManager注册一个监听事件并且在不需要的时候解注册就搞定了。下面来看具体的使用:

获取SensorManager对象:

//得到sensorManager对象
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);


获取到手机支持的传感器集合:

//获取到所有的传感器
        List sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);
        for (int i = 0; i < sensorList.size(); i++) {
           Sensor sensor= (Sensor) sensorList.get(i);
            Log.e("MainActivity",sensor.getName());
        }


用公司的手机测试了一下发现这个手机比较旧只有3个传感器,分别为光强传感器、加速度传感器、距离传感器。今天就以光线传感器为例来介绍使用。

1、获取光传感器:

//获取光线传感器
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);


2、定义一个监听接口:

//创建一个传感器事件对象
        sensorEventListener = new SensorEventListener() {
            //传感器精度改变时调用
            @Override
            public void onSensorChanged(SensorEvent event) {
                Log.e(TAG, "onSensorChanged");
                //精度
                int accuracy = event.accuracy;
                //时间戳
                long timestamp = event.timestamp;
                //传感器的值,不同的传感器代表不同的消息
                float[] values = event.values;
                for (int i = 0; i < values.length; i++) {
                    txtv.setText("光照强度为:"+values[0]);
                }
            }
            //传感器信息改变时调用
            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
                Log.e(TAG, "精度改变了:" + accuracy);
            }
        };


3、给SensorManager注册监听事件:

//注册
        sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_GAME);


其中第三个参数为样例级别,有四种:



从上往下依次采样频率变低,一般使用第二种,不推荐使用第一种。

4、解注册:

@Override
    protected void onDestroy() {
        super.onDestroy();
        //解注册
        sensorManager.unregisterListener(sensorEventListener);
    }


别的传感器使用套路是一样的,无非就是获取传感器类型不一样,values[]数组的值代表的含义不一样。最后附上Demo:点击下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: