首页 > 解决方案 > 前台服务未在后台更新传感器数据

问题描述

我是 Android 开发的新手,我API version 29使用 Kotlin 创建了一个应用程序。我的主要活动是启动执行以下任务的前台服务。

该应用程序应该在后台获取位置和传感器信息并更新通知。

当 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当主要活动关闭时是否有任何持续获取传感器值的方法。

标签: kotlinandroid-serviceaccelerometerandroid-sensorsforeground-service

解决方案


推荐阅读