java - 如何在手机 hibernate 时继续使用 onSensorChanged()?

标签 java android xml kotlin

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

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

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

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

最佳答案

即使使用 WakeLock - official documentation is clear,当应用进入后台时,您将无法使用 Sensors API。关于那个。

不过,即使在前台服务中禁用了手机屏幕,您也可以轻松继续使用 Sensors API。为此,请使用本文档作为开始 - Foreground Service .这并不能保证服务的永恒生命,但它肯定会比普通服务活得更久,而且您可以访问 Sensors API。在这种情况下,我不确定 WakeLock - 您将不得不尝试(但我认为您不需要它)。

Here是答案的跨度。其中一些包含示例代码甚至示例项目的链接

Herehere有媒体文章形式的 neet 示例。

关于java - 如何在手机 hibernate 时继续使用 onSensorChanged()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69598901/

相关文章:

java - 跟踪 xml 文件中的更改

java - 如果缺少某些字符,则从列表中删除字符串

java - 声明不必要的较大数据类型、变量类型及其性能

android - Gradle Android 任务因错误不明而崩溃

xml - jQuery.ajax 解析 XML

ios - 在WP7中解析iOS .plist文件

java - 是什么导致 java.lang.IncompatibleClassChangeError?

java - 将模型注入(inject)到具有 @Autowired 注释的 bean 中

android - SDK 中缺少导入类时,Android 项目如何编译?

android - 如何在 Android 应用程序中与 QSEE 通信?