kotlin - 前台服务未在后台更新传感器数据
问题描述
我是 Android 开发的新手,我API version 29
使用 Kotlin 创建了一个应用程序。我的主要活动是启动执行以下任务的前台服务。
- 使用FusedLocationProviderClient获取位置。
- 获取传感器数据(加速度计和陀螺仪)
- 在通知中显示上述信息
该应用程序应该在后台获取位置和传感器信息并更新通知。
当 Main Activity 应用程序运行时,应用程序当前正在更新传感器和位置数据。关闭主活动后,位置数据会在通知中更新,但传感器数据不会更新。我已经阅读了一些 QnA 会话(包括这个),但我无法找出问题所在。
启动服务的代码:
val serviceIntent = Intent(this, MyBackgroundService::class.java);
serviceIntent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
startForegroundService(serviceIntent);
清单中的权限和功能:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
<uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true" />
清单中的前台服务:
<service android:name=".MyBackgroundService"
android:enabled="true"
android:exported="true"
android:foregroundServiceType="location"
android:icon="@drawable/logo"
android:process=":MyBackgroundServiceProcess"/>
我想知道foregroundServiceType
当主要活动关闭时是否有任何持续获取传感器值的方法。
解决方案
推荐阅读
- angular - How to Select if div has class in component side on Angular
- uml - 序列图:有什么区别?
- c++ - 标头中的类不包括所有变量和函数?
- javascript - 为什么 Bootstrap 会破坏我的正常 CSS 布局,我该如何解决?
- reactjs - 如何从此 API 对象的响应中显示 quoteText
- html - 如何在模态打开时防止正文滚动
- stripe-payments - 检索启用了 Stripe 帐户的付款方式
- c++ - PDDocSave 需要更多时间来保存文件
- slim - Slim 框架 - url 参数中的电子邮件
- ios - 在 IOS 中需要一个 searchText 荧光笔