android光照、加速度传感器

android的光照、加速度传感器

android的传感器,用法大致一致,所以知道一两个的用法,基本都能很轻松的使用其他传感器。

监听接口那需要传三个参数,第一个是listener的实例,第二个是Sensor的实例,第三个是模式,有四种值可选:
SENSOR_DELAY_UI,
SENSOR_DELAY_NORMAL,
SENSOR_DELAY_GAME,
SENSOR_DELAY_FASTEST.
他们的更新速率依次递增.

android中的传感器大致分为:
SENSOR_TYPE_ACCELEROMETER 1 //加速度
SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力
SENSOR_TYPE_ORIENTATION 3 //方向
SENSOR_TYPE_GYROSCOPE 4 //陀螺仪
SENSOR_TYPE_LIGHT 5 //光线感应
SENSOR_TYPE_PRESSURE 6 //压力
SENSOR_TYPE_TEMPERATURE 7 //温度
SENSOR_TYPE_PROXIMITY 8 //接近
SENSOR_TYPE_GRAVITY 9 //重力
SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加速度
SENSOR_TYPE_ROTATION_VECTOR 11//旋转矢量

public class MainActivity extends AppCompatActivity {

    @Bind(R.id.light_sensor_txt)
    TextView lightSensorTxt;

    private SensorManager sensorManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        //获取sensorManager是所有传感器的管理器
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

        /**
         * 光照传感器,sensor获取光照传感器
         * listener监听接口,需要重写两个方法
         * registerListener需要注册
         */
        Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
        sensorManager.registerListener(listener_light, sensor, SensorManager.SENSOR_DELAY_FASTEST);

        /**
         * 加速传感器,sensor获取加速传感器
         * listener监听接口,需要重写两个方法
         * registerListener需要注册
         */
        Sensor sensor_Acceleromeater = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        sensorManager.registerListener(listener_accelerometer, sensor_Acceleromeater, SensorManager.SENSOR_DELAY_NORMAL);

        /**
         * 方向传感器
         */
       // Sensor sensor_orientation = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

    }

    /**
     * 程序退出 一定要取消注册,释放资源
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (sensorManager != null) {
            sensorManager.unregisterListener(listener_light);
            sensorManager.unregisterListener(listener_accelerometer);
        }
    }

    /**
     * 加速的传感器监听是有三个数据xyz在value[]数组里面的
     * 加速度可以触发微信摇一摇的玩法,把摇一摇逻辑写在里面
     */
    private SensorEventListener listener_accelerometer = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent sensorEvent) {
            float xValue = Math.abs(sensorEvent.values[0]);
            float yValue = Math.abs(sensorEvent.values[1]);
            float zValue = Math.abs(sensorEvent.values[2]);
            if(xValue>15||yValue>15||zValue>15){
                Toast.makeText(MainActivity.this, "摇一摇呦!", Toast.LENGTH_SHORT).show();
            }
        }

        /**
         *传感器精度发生变化才会调用该方法里面
         */
        @Override
        public void onAccuracyChanged(Sensor sensor, int i) {

        }
    };
    /**
     * 光照监听接口的数据就在value[]数组里面,取出即可
     */
    private SensorEventListener listener_light = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent sensorEvent) {
            float value = sensorEvent.values[0];
            lightSensorTxt.setText("光照强度:" + value + "lx");
        }

        /**
         * 传感器精度发生变化才会调用该方法里面
         */
        @Override
        public void onAccuracyChanged(Sensor sensor, int i) {

        }
    };
}

你可能感兴趣的:(android开发)