前台服务不在后台更新传感器数据

时间:2021-06-02 22:05:12

标签: kotlin android-service accelerometer android-sensors foreground-service

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

  • 使用 FusedLocationProviderClient 获取位置。
  • 获取传感器数据(加速度计和陀螺仪)
  • 在通知中显示上述信息

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

当主活动应用程序运行时,应用程序当前正在更新传感器和位置数据。关闭主活动后,通知中的位置数据会更新,但传感器数据不会更新。我已经阅读了一些 QnA 会话(包括 this),但我无法找出问题所在。

启动服务的代码:

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" />

Manifest 中的前台服务:

<service android:name=".MyBackgroundService"
        android:enabled="true"
        android:exported="true"
        android:foregroundServiceType="location"
        android:icon="@drawable/logo"
        android:process=":MyBackgroundServiceProcess"/>

我想知道是否有任何 foregroundServiceType 可以在 Main Activity 关闭时持续获取 Sensor 值。

0 个答案:

没有答案
相关问题