我試圖從三星Galaxy Tab GT-P1000讀取多個傳感器,他們似乎相對於我使用的應用程序而言CPU性能相當差。Android傳感器CPU使用率
作爲一個測試,我創建了一個小程序,它實現了SensorEventListener的加速度傳感器,但不做任何處理的傳感器讀數:
public class SensorTestActivity extends Activity implements SensorEventListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SensorManager oSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
oSensorManager.registerListener(this, oSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
}
}
這導致10%不變的CPU使用率,而我調試(即我的設備插入到我的電腦)和5%的使用率,而我沒有。如果我使用SENSOR_DELAY_FASTEST,則在我調試時使用skyrockets爲30%,而當我調試時爲20%。
當我想使用多個傳感器時,這會產生大量問題,因爲它們都具有高CPU使用率,並且沒有任何數據處理。我使用了Android Market的Compass應用程序,並且它們在給定的時間內都沒有使用超過5%的CPU,所以我覺得我錯過了一些明顯的東西,但找不到其他人有同樣的問題。
我還沒有編輯此應用程序的清單文件或佈局 - 這是Eclipse製作的默認模板,我添加了傳感器。
更新:我讀取CPU使用率的方法有缺陷,因爲我使用任務管理器來測量它。當任務管理器打開時,我的應用程序不會停止使用onPause的傳感器,而大多數其他應用程序則會這樣做。
我對CPU利用率的說法相當愚蠢 - 我在任務管理器中測量了使用情況,忘記了當我這樣做時大多數應用程序會暫停傳感器並因此給出非常小的讀數。另一方面,我的應用程序並沒有停止覆蓋onPause方法的傳感器。也許解決這個問題的最好方法是嘗試設置自己的定製延遲或給定的延遲時間,因爲增加更多的傳感器如放大器或陀螺儀可能會導致事情變得很糟糕。 – Namdrater
@ user1021922:對不起,您無法創建自定義延遲。 – CommonsWare