Android Transitions API - 24-48 小时后停止接收任何更新

Pet*_*der 5 android activity-recognition activitytransitionapi

我正在使用Transitions API,前 24-48 小时一切正常 - 我从 API 收到身体活动变化,但 24-48 小时后什么也没有。

在 Transitions API Receiver 下,我使用Foreground Service48 小时后仍处于活动状态的接收器。我可以通过查看日志来验证这一点;此外,Location (Fused Location Client)24-48 小时后仍然会有更新,而 Transition API 似乎已经死了。

有人经历过这个吗?我确实认为使用 Worker 重置(取消注册然后再次注册)转换 API 可能是替代方案(每 1-2 小时一次)。不确定这是否有帮助。我有一种感觉,当应用程序进入打瞌睡模式/某种睡眠状态时,就会发生这种情况。

另外,我的前台服务使用exported=false,也许将其设置为true会有帮助?(我希望有人给出答案并解释为什么你应该使用其中之一)

操作系统:安卓12

use*_*239 5

在具有重要运动传感器的设备上,当设备长时间处于静止状态时,通过停止活动报告来节省电池。一旦设备再次移动,它将恢复。

Google 开发者视频中提到了这一点

更新:

运动被视为设备移动,例如倾斜、摇动、旋转或摆动。而且它必须是显着的(而不是小的)运动。你可以用这种方式测试它。

private SensorManager sensorManager;
private Sensor sensor;
private TriggerEventListener triggerEventListener;
...
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION);

triggerEventListener = new TriggerEventListener() {
    @Override
    public void onTrigger(TriggerEvent event) {
        // Do work
    }
};

sensorManager.requestTriggerSensor(triggerEventListener, mSensor);
Run Code Online (Sandbox Code Playgroud)