首页 > 解决方案 > 手机睡着时如何继续使用onSensorChanged()?

问题描述

我正在创建一个需要检测手机检测到的最大加速度的应用程序。目前它可以工作,但是当屏幕关闭时它不会继续任务。为了实现我现在所拥有的,我写道onCreate

mSensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
mAccelerometer = mSensorManager!!.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION)

我已经在类中全局初始化了这些变量。然后我实现了onSensorChanged(), onResume(),onPause()onAccuracyChanged留空。

据我了解,实现这样的功能与更简单地创建异步任务不同。我将如何改变它以使其在后台也能正常工作?谢谢!

标签: javaandroidxmlkotlin

解决方案


即使应用程序进入后台,您也将无法使用 Sensors API WakeLock-官方文档对此很清楚

不过,即使在前台服务中禁用了手机屏幕,您也可以轻松地继续使用 Sensors API。为此,请将此文档用作启动前台服务。这并不能保证服务的永久寿命,但它肯定会比普通服务寿命更长,并且您将可以访问传感器 API。我不确定WakeLock在这种情况下 - 你必须尝试(但我认为你不需要它)。

是一系列答案。其中一些包含示例代码,甚至包含示例项目的链接

这里这里有一些媒体文章形式的例子。


推荐阅读