如何使用Google Play服务API客户端进行活动识别

时间:2015-05-13 13:32:17

标签: android google-play-services activity-recognition

我想检测一下我是否正在使用Google的Play服务Api客户端进行活动识别。我已经在互联网上阅读了几篇关于这个主题的帖子(包括堆栈溢出),但我仍然无法理解如何使用API​​。

我想知道检测我是否走路的最简单代码是什么。我看到了这个网页:https://tsicilian.wordpress.com/2013/09/23/android-activity-recognition/

使用这些代码

 * Called when a new activity detection update is available.
 */
@Override
protected void onHandleIntent(Intent intent) {
     //...
      // If the intent contains an update
    if (ActivityRecognitionResult.hasResult(intent)) {
        // Get the update
        ActivityRecognitionResult result = 
          ActivityRecognitionResult.extractResult(intent);

         DetectedActivity mostProbableActivity 
                = result.getMostProbableActivity();

         // Get the confidence % (probability)
        int confidence = mostProbableActivity.getConfidence();

        // Get the type 
        int activityType = mostProbableActivity.getType();
       /* types:
        * DetectedActivity.IN_VEHICLE
        * DetectedActivity.ON_BICYCLE
        * DetectedActivity.ON_FOOT
        * DetectedActivity.STILL
        * DetectedActivity.UNKNOWN
        * DetectedActivity.TILTING
        */
        // process
    }

我只想得到getMostProbableActivity()的结果,但我不知道如何得到它。这些代码应该放在哪里,除了这些代码我需要做什么(例如我需要在此之前初始化,我需要实现其他类吗?是mainActivity中的这些代码吗?)

我无法理解Google文档和网络上的任何教程,因为我无法理解它们(可能是因为它们的级别太高)。

我真的很感激这个答案。谢谢。

1 个答案:

答案 0 :(得分:4)

实际上Google提供了一个示例应用https://github.com/googlesamples/android-play-location/tree/master/ActivityRecognition

您需要例如从您的活动

请求活动更新
googleApiClient = new GoogleApiClient.Builder(this)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .addApi(ActivityRecognition.API)
        .build();

googleApiClient.connect();

Intent intent = new Intent(this, YourService.class);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
            googleApiClient,
            1000 /* detection interval */,
            pendingIntent);