2

我正在 2 个应用程序中测试 Activity Recognition API:Google 示例代码和此代码在我的应用程序中的实现。

问题是这两个应用程序都能很好地识别活动,但几个小时后,意图服务停止,我没有从他们两个那里得到任何活动识别。

知道为什么即使我已经使用意图服务测试了地理围栏 api 并且它可以永远工作而不会停止,为什么意图服务会停止?

4

2 回答 2

4

您的 IntentService 可能会“停止”,我会说“入睡”,因为:

为了节省电池电量,当设备长时间处于“静止”状态时,活动报告可能会停止。一旦设备再次移动,它将恢复。这只发生在支持 Sensor.TYPE_SIGNIFICANT_MOTION 硬件的设备上。

基本上,大多数 API >= 20 的设备都应该是这种情况。

请在此处找到更多信息。

不幸的是,您只能请求活动更新,并且无法强制ActivityRecognitionApi连续提供当前活动,即使它在某个神秘的“延长时间”内“静止”。

在我看来,如果 ActivityRecognitionApi 的这个特性是可配置的,那会更方便。

于 2015-10-06T08:44:38.130 回答
0

即使在 Manifest 文件中注册广播接收器,您也需要在 Oreo+ 中动态注册,否则将无法正常工作。试试这个。在主要活动中或在服务的 startCommand 中添加此代码。它对我有用。我也在 Android 10 上测试过此代码。完美运行。您无需在清单文件中注册广播接收器。

@Override
    protected void onStart() {
        super.onStart();
        IntentFilter intentFilter=new IntentFilter(Constants.BROADCAST_DETECTED_ACTIVITY);
    intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
        registerReceiver(broadcastReceiver,intentFilter);

    }
于 2020-06-22T08:39:30.783 回答