Android 如何在手机处于锁定状态时检测震动事件

Android 如何在手机处于锁定状态时检测震动事件,android,service,shake,Android,Service,Shake,我读了这篇文章。但这个问题与此不同 我创建了一个应用程序,当我摇动设备时,它会说话(使用TextAPI)。为此,我创建了一个“服务”,其中注册了“ShakeListener”。当我摇动设备时,它会在当前时间讲话 但是,当我的设备处于“开启”状态时,此功能可以正常工作。当我锁定设备时,它停止工作。有人能详细说明一下背后的问题吗?我认为这里的问题是,当你锁定设备时,它会进入睡眠模式。并且您的ShakeListener不接收shake事件。实现所需功能的最佳方法是注册广播接收器以接收抖动事件。但据我所

我读了这篇文章。但这个问题与此不同

我创建了一个应用程序,当我摇动设备时,它会说话(使用TextAPI)。为此,我创建了一个“服务”,其中注册了“ShakeListener”。当我摇动设备时,它会在当前时间讲话


但是,当我的设备处于“开启”状态时,此功能可以正常工作。当我锁定设备时,它停止工作。有人能详细说明一下背后的问题吗?

我认为这里的问题是,当你锁定设备时,它会进入睡眠模式。并且您的ShakeListener不接收shake事件。实现所需功能的最佳方法是注册广播接收器以接收抖动事件。但据我所知,android并没有提供这样的广播。另一个解决方案是创建部分唤醒锁。它将阻止android睡眠。但这当然会导致电池问题。还可以查看此线程:

在修补某些内核实现之前,您可能无法收到此通知。安卓不会发布这样的通知。

有什么解决办法吗?