屏幕关闭时检测手机移动

时间:2015-02-07 09:31:04

标签: android gps accelerometer

我正在开发一个应该检测用户移动的应用程序,当他停止超过5分钟时,它应该会发出警报。我能够用加速度计检测运动,但问题是当屏幕关闭时它不起作用。我也试过使用部分wakeLock。重新注册加速度计也不起作用(这应该是摩托罗拉设备的解决方法)。

当GPS速度低于1米/秒超过5分钟时,我可以使用GPS进行此操作并发出警报但我不确定屏幕关闭时是否会收到GPS更新。

所以我需要一个能够检测用户移动的解决方案,即使屏幕在大多数设备上关闭也是如此。有关如何实现这一点的任何想法?

先谢谢

2 个答案:

答案 0 :(得分:1)

您应该为此类操作获取部分wake lock。使用PowerManager类。

这样的事情:

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);
PowerManager.WakeLock lock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,  "SensorRead");
lock.acquire();

您还需要AndroidManifest.xml中的此权限:

 <uses-permission android:name="android.permission.WAKE_LOCK" />

当您完成工作时,建议您使用lock.release();

修改

此外,此article可能对您有用。

答案 1 :(得分:0)

partial wake lock这是您在屏幕关闭时需要访问的内容。

private PowerManager.WakeLock mWakeLock;

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
mWakeLock.acquire();

完成后,只需释放锁:

  

mWakeLock.release();

如果您在服务中获得加速度计数据,您只需获取锁定在onCreate()中并在onDestroy()中释放。