当前位置: 首页 > 知识库问答 >
问题:

Android活动识别API,停止在后台运行

岳昊空
2023-03-14

我正在处理活动识别API,试图使其在后台运行。因此,我创建了一个连接到Play Services的服务,并且一直处于活动状态。当服务被销毁并重新创建时,我要干杯了。问题是,一段时间后,即使服务正在运行,它也会停止检测活动。

下面是该服务的一些代码。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
    buildGoogleClient();
    return START_STICKY;
}

private void buildGoogleClient()
{
    mGoogleApiClientActivityDetection = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(ActivityRecognition.API)
            .build();
    mGoogleApiClientActivityDetection.connect();

}

@Override
public void onConnected(Bundle bundle)
{
    if (mGoogleApiClientActivityDetection.isConnected() && detectionConnectionSet == false)
    {
        detectionConnectionSet = true;
        ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
                mGoogleApiClientActivityDetection,
                Constants.ACTIVITY_DETECTION_INTERVAL_IN_MILLISECONDS,
                PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
    }
}

我还覆盖了onConnectionSuspend

这段代码正常工作了一段时间,然后突然停止了。有人知道为什么吗?

谢谢。

共有2个答案

凌俊名
2023-03-14

事实证明,这是一些手机供应商积极的任务管理。

秋阳荣
2023-03-14

您使用的是Intent Service还是普通服务。您还必须创建一个新类并将其扩展到WakeFulBroadcastReiever,并在清单中执行相同的操作,以便服务as在设备启动时立即启动。

 类似资料:
  • 我正在制作一个应用程序,使用ActivityRecognition API跟踪用户在后台的活动,如果用户在指定的时间段(例如1小时)内保持在同一位置,则系统会推送通知,告诉用户散步。我已经实现了活动识别,但仅适用于打开应用程序的情况。显然,Google API客户端需要保持连接才能发送活动更新。我的问题是-对于后台活动跟踪,什么是更好的解决方案: 1)在主活动(或单独活动)中实现警报管理器,该活动

  • 在我的一个活动中,有一个使用mediaPlayer播放音乐的按钮。它还可以选择在后台播放音乐,或者在活动结束时停止。 我用这个代码。 这很好用。现在的问题是,当用户返回活动并按下播放按钮时,它会启动一个新的mediaPlayer并播放新的音乐。当新音乐开始播放时,我想在后台停止播放以前的音乐。 这是我的代码 以及MediaPlayer声明 在创建之前

  • 在最近的Google Play服务更新中,有人对活动识别API有问题吗? 我已经在一个应用程序中实现了它。在5.0更新之前,它工作得非常好。现在,当用户走路或坐着不动时,它会在车内返回:/ 并且根本不返回、或。 我应该知道的活动识别API是否有任何更改? 如果你需要更多的细节,请告诉我。

  • 我将使用google play services活动识别api编写一个应用程序。android开发者网站上的培训是直接进行的,但在过去的几个小时里,我编写了一个简单的应用程序,但没有得到任何结果。更新:实际上,我将在5秒钟的时间间隔内以toast消息的形式显示用户的当前活动(如ActivityRecognitionService-Intent服务中的OnIntentHandler方法所示)。我认为

  • 我正在开发android原生应用程序。我的要求是获取设备的当前活动,如运行,in_vehicle,静止等等。我使用Activity识别API并设置了通过IntentService接收活动更改的挂起意图。我给每个更新5秒的间隔。它未能在某段时间内提供活动更改并再次开始提供活动。之后我更喜欢Awareness SnapshotAPI来获取活动状态。它也是同样的结果,未能定期提供活动。两个API有时提供

  • 我试图在项目中使用活动识别来检测用户何时“在车内”。(驾驶)问题是几乎不可能使用它,因为大多数可能的活动经常报告“车内”,即使我已经在办公桌前坐了很长时间,或者只是在家里走来走去。很高兴知道API是如何得出这一结论的。 我认为这个功能有很大的潜力,但现在有些东西显然不起作用。 这是一份每30秒进行一次的最有可能的活动日志,以显示我的意思。坐在办公桌前,4分钟后,我把电话转了几次,结果是“最有可能的