我使用加速计读数来捕捉摇动手机的用户。 当用户摇动手机时, 我想设计它来做一些事情。 它很好, 但我在Pause () 方法上安装了一种加速计, 因为当用户不在应用程序内时, 我不需要加速计来检测任何摇动动作, 因为那样会产生不理想的结果 。 在 Pause () 上, 我从传感器管理器中解开加速计 。
我希望在Resume()中,我可以重新注册感官管理者,并开始我的工作。 显然,这并非完全正确。 我读过文件,而且说实话,我一直无法弄清楚究竟发生了什么事情。
守则:
我宣布全球变异感官Mgr:
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);
暂停( ) :
protected void onPause() {
if (sensorMgr != null) {
sensorMgr.unregisterListener(this,
SensorManager.SENSOR_ACCELEROMETER);
sensorMgr = null;
}
super.onPause();
}
恢复( ) :
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
我真的很感激你们能帮上忙 并提前感谢!