android 摇一摇功能相关

  1. //这里可以直接设置第三个参数的值,设置的越大,则感应的频率越高,灵敏度也越高,实际测试中频率太高会导致系统版本较低的设备感应器不能正常使用,如2.2的设备不能大于3,否则失效,版本2.3及已上能适应更大的频率
SensorRegistOK = mSensorManage.registerListener(mSensorEventListener, mSensor,SensorManager.SENSOR_DELAY_UI);

第一个参数:监听Sensor事件,第二个参数是Sensor目标种类的值,第三个参数是延迟时间的精度密度。延迟时间的精密度参数如下:

参数 延迟时间
SensorManager.SENSOR_DELAY_FASTEST 0ms
SensorManager.SENSOR_DELAY_GAME. 20ms
SensorManager.SENSOR_DELAY_UI 60ms
SensorManager.SENSOR_DELAY_NORMAL 200ms

因为感应检测Sensor的服务是否频繁和快慢都与电池参量的消耗有关,同时也会影响处理的效率,所以兼顾到消耗电池和处理效率的平衡,设置感应检测Sensor的延迟时间是一门重要的学问,需要根据应用系统的需求来做适当的设置。

感应检测Sensor的硬件检测组件收不同的厂商提供。你可以采用Sensor的getVendor(),Sensor()的getName()和Sensor的getVesion()方法来取得 厂商的名称、产品和产品版本。

  1. 设置监听器,回调方法:public void onSensorChanged(SensorEvent event) ,稍微有一点点移动,都会产生回调。所以当我们在判断是否触发doSomething,需要增加控制开关,以便只做一次响应处理。
 @Override
    public void onSensorChanged(SensorEvent event) {
        int type = event.sensor.getType();

        if (type == Sensor.TYPE_ACCELEROMETER) {
            float[] values = event.values;
            float x = values[0];
            float y = values[1];
            float z = values[2];
            if ((Math.abs(x) > limited || Math.abs(y) > limited || Math
                    .abs(z) > limited) && !isShake()) {
                doSomething();
            }
        }
    }

你可能感兴趣的:(android 摇一摇功能相关)