屏幕关闭时,Android加速度计不起作用
我正在为我的计算机科学毕业论文开发一个应用程序,我需要收集和记录加速度计数据。我需要整整一整天才购买它,所以电池电量受到严重限制(例如,我无法打开屏幕)。而且,这不是面向市场的应用程序,因此,如果需要的话,进行一些严重的黑客入侵甚至是低级C / C ++编码也是可以接受的。 众所周知,在许多设备上,当屏幕关闭时,加速度计事件的侦听器会停止生成事件(有关此问题的一些链接:http : //code.google.com/p/android/issues/detail? id = 3708,加速度计当屏幕在Droid / Nexus One上关闭时,即使有WakeLock,也停止提供样品。我已经彻底搜索了一些替代方法,其中一些方法不适用于我的设备(LG P990,ROM)。 所以发生了什么事情:当您在服务中注册android加速度传感器的事件监听器时,它工作正常,直到屏幕关闭。我已经尝试在IntentService上的服务上注册eventListener,试图获取WakeLocks。关于唤醒锁,我可以通过观察LOGcat输出来验证该服务是否仍在运行,但似乎加速度计已进入睡眠模式。某些链接中提供的解决方法之一是使用IntentService的线程定期注销和重新注册事件侦听器,如以下代码段所示 synchronized private static PowerManager.WakeLock getLock(Context context) { if (lockStatic==null) { PowerManager mgr=(PowerManager)context.getSystemService(Context.POWER_SERVICE); lockStatic = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,NAME); lockStatic.setReferenceCounted(true); } return(lockStatic); } @Override protected void onHandleIntent(Intent intent) { sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE); sensorManager.unregisterListener(this); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); synchronized (this) { boolean …