在我的應用程序中,我使用AccelerationSensor.accelerationchanged(xAccel,yAccel,zAccel)API 問題是該方法被調用每個o.oooo1在任何軸上發生更改,因此應用程序變爲非常緩慢,有時甚至變成「不響應」AccelerationSensor.accelerationchanged()使應用程序緩慢
有沒有辦法檢查整數部分是否已經改變,並讓任何十進制變化?
在我的應用程序中,我使用AccelerationSensor.accelerationchanged(xAccel,yAccel,zAccel)API 問題是該方法被調用每個o.oooo1在任何軸上發生更改,因此應用程序變爲非常緩慢,有時甚至變成「不響應」AccelerationSensor.accelerationchanged()使應用程序緩慢
有沒有辦法檢查整數部分是否已經改變,並讓任何十進制變化?
這是我在做什麼,我在我的服務
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
這是我處理我的數據的功能,它重量很輕,但它應該使用閾值給你一個想法的onStartCommand()
。在我的情況下,我真的只需要瞭解一下設備,在我的情況下,它發現差異值約爲1.75G,但對您而言可能會有所不同。
@Override
public void onSensorChanged(SensorEvent event) {
if(last[0] == 0.0f &&
last[1] == 0.0f &&
last[2] == 0.0f){
last[0] = event.values[0];
last[1] = event.values[1];
last[2] = event.values[2];
return;
}
float diff = 0f;
if(Math.abs(last[0] - event.values[0]) > differenceValue ||
Math.abs(last[1] - event.values[1]) > differenceValue ||
Math.abs(last[2] - event.values[2]) > differenceValue){
Log.d(TAG,"G values are "+event.values[0]+" "+event.values[1]+" "+event.values[2]);
Log.d(TAG,"Last G values are "+last[0]+" "+last[1]+" "+last[2]);
diff = Math.abs(last[0] - event.values[0]);
if(diff < Math.abs(last[1] - event.values[1])){
diff = Math.abs(last[1] - event.values[1]);
}
if(diff < Math.abs(last[2] - event.values[2])){
diff = Math.abs(last[2] - event.values[2]);
}
Log.d(TAG,"Sensor difference: "+diff);
//Do what ever processing you need here
}
last[0] = event.values[0];
last[1] = event.values[1];
last[2] = event.values[2];
}
它的工作,非常感謝:-) – mabdrabo 2013-02-19 20:38:23
您使用的是什麼傳感器輪詢間隔? – draksia 2013-02-19 20:12:06
傳感器輪詢時間間隔:400 – mabdrabo 2013-02-19 20:14:33