《第一行代码》读书笔记:第十二章/传感器的用法

步骤:

1:创建SensorManager(传感器管理器)的实例sensorManager,通过getSystemService()函数初始化该实例

  private SensorManager sensorManager;
    sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);

2: sensorManager 调用 getDefaultSensor() 函数来确定传感器类型,将返回值给sensor,它代表我们所选择的传感器

Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
3 :  sensorManager 注册一个监听器,参数如下: listener SensorEventListener 的实例, sensor是 Sensor 的实例,还需要用管理器调用传感器更新速率
sensorManager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_NORMAL);
4:当然我们需要创建监听器 listener 才能完成注册, SensorEventListener 是一个接口,它自带了两个方法
  SensorEventListener listener=new SensorEventListener()
    {
    public void onSensorChanged(SensorEvent event){      }//传感器数值变化时调用
    public void onAccuracyChanged(Sensor sensor, int accuracy) {     }//传感器精度变化时调用
    }

数值变化时我们要用到SensorEvent类型参数event,这其中包含了一个values[]数组,传感器输出的数据都在里面

5:程序退出或传感器使用完毕后要释放掉资源:

sensorManager.unregisterListener(listener);
例子:加速度传感器(摇一摇):

public class MainActivity extends ActionBarActivity {

    private SensorManager sensorManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
        //传感器类型
        Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        //注册传感器监听
        sensorManager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_NORMAL);
    }
    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        if(sensorManager!=null){
            sensorManager.unregisterListener(listener);
        }
    }
    SensorEventListener listener=new SensorEventListener() {
        //传感器监听
        @Override
        public void onSensorChanged(SensorEvent event) {
            // TODO Auto-generated method stub
            float xValue=Math.abs(event.values[0]);
            float yValue=Math.abs(event.values[1]);
            float zValue=Math.abs(event.values[2]);
            if(xValue>15||yValue>15||zValue>15){
                Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT).show();
            }

        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
            // TODO Auto-generated method stub

        }
    };


}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值