- //這里可以直接設(shè)置第三個參數(shù)的值,設(shè)置的越大痊银,則感應(yīng)的頻率越高,靈敏度也越高施绎,實際測試中頻率太高會導(dǎo)致系統(tǒng)版本較低的設(shè)備感應(yīng)器不能正常使用溯革,如2.2的設(shè)備不能大于3,否則失效谷醉,版本2.3及已上能適應(yīng)更大的頻率
SensorRegistOK = mSensorManage.registerListener(mSensorEventListener, mSensor,SensorManager.SENSOR_DELAY_UI);
第一個參數(shù):監(jiān)聽Sensor事件鬓照,第二個參數(shù)是Sensor目標(biāo)種類的值,第三個參數(shù)是延遲時間的精度密度孤紧。延遲時間的精密度參數(shù)如下:
參數(shù) 延遲時間
SensorManager.SENSOR_DELAY_FASTEST 0ms
SensorManager.SENSOR_DELAY_GAME. 20ms
SensorManager.SENSOR_DELAY_UI 60ms
SensorManager.SENSOR_DELAY_NORMAL 200ms
因為感應(yīng)檢測Sensor的服務(wù)是否頻繁和快慢都與電池參量的消耗有關(guān),同時也會影響處理的效率拒秘,所以兼顧到消耗電池和處理效率的平衡号显,設(shè)置感應(yīng)檢測Sensor的延遲時間是一門重要的學(xué)問,需要根據(jù)應(yīng)用系統(tǒng)的需求來做適當(dāng)?shù)脑O(shè)置躺酒。
感應(yīng)檢測Sensor的硬件檢測組件收不同的廠商提供押蚤。你可以采用Sensor的getVendor(),Sensor()的getName()和Sensor的getVesion()方法來取得 廠商的名稱、產(chǎn)品和產(chǎn)品版本羹应。
- 設(shè)置監(jiān)聽器揽碘,回調(diào)方法:public void onSensorChanged(SensorEvent event) ,稍微有一點點移動,都會產(chǎn)生回調(diào)雳刺。所以當(dāng)我們在判斷是否觸發(fā)doSomething劫灶,需要增加控制開關(guān),以便只做一次響應(yīng)處理掖桦。
@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();
}
}
}