私は、電話を振っているユーザーを捕らえるために加速度計の測定値を取っています。ユーザーが電話を振ったとき、何かをするようにデザインしたいと思います。正常に動作しますが、ユーザーがアプリ内にいないときに加速度計が揺れを検出する必要がないため、onPause()メソッドを使用しました。これは、望ましくない結果をもたらす可能性があるためです。そのため、onPause()で、SensorManagerから加速度計の登録を解除します。
onResume()で、SensorManagerを再登録して、ビジネスに取り掛かることができれば幸いでした。明らかに、それはそのように完全には機能していません。私はドキュメントを読みましたが、正直なところ、何が起こっているのか理解できませんでした。
コード:
グローバル変数sensorMgrを宣言します:
private SensorManager sensorMgr;
次に、それを加速度計に登録します。
sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
// Detect if device has accelerometer
boolean accelSupported = sensorMgr.registerListener(this,
SensorManager.SENSOR_ACCELEROMETER,
SensorManager.SENSOR_DELAY_GAME);
if (!accelSupported) {
// No accelerometer on this device
sensorMgr.unregisterListener(this,
SensorManager.SENSOR_ACCELEROMETER);
}
sensorMgr.registerListener(this, SensorManager.SENSOR_ACCELEROMETER,
SensorManager.SENSOR_DELAY_GAME);
onPause():
protected void onPause() {
if (sensorMgr != null) {
sensorMgr.unregisterListener(this,
SensorManager.SENSOR_ACCELEROMETER);
sensorMgr = null;
}
super.onPause();
}
onResume():
protected void onResume() {
sensorMgr.registerListener(this, SensorManager.SENSOR_ACCELEROMETER,
SensorManager.SENSOR_DELAY_GAME);
super.onResume();
}
エラー:
05-24 14:35:54.058: E/AndroidRuntime(16783): java.lang.RuntimeException: Unable to resume activity : java.lang.NullPointerException
私はあなたたちが与えることができるどんな助けにも本当に感謝します、そして前もって感謝します!