1

私はアンドロイドのネイティブアプリケーションを開発しています。私の要求は、実行中、in_vehicle、stillなどのデバイスの現在のアクティビティを取得することです。 ActivityRecognitionAPIを使用して、IntentServiceを通じてアクティビティの変更を受け取るようにpendingintentを設定しました。私はそれぞれの更新のために5秒間隔を与えた。一定期間内に活動の変化を提供することができず、再び活動を開始した。その後、私は活動状態を取得するためにAwareness SnapshotAPIを優先しました。その同じ結果は、活動を定期的に提供することができませんでした。どちらのAPIも時々提供し、何度も提供しません。開発用にGooglePlayServices 10.2.0を使用しました。誰でもこれらの事柄と解決策が定期的な活動の更新を得る理由は何かを教えてください。Androidのアクティビティの認識の問題

ありがとうございます。

私は歩いたり、走っているように、自分のアプリユーザーの行動を表示しようとしています。これは私の必要条件です。

ウェイ1:ActivityRecognition.API

Intent intent = new Intent(mContext, RequestActivityService.class); 
PendingIntent callbackIntent = PendingIntent.getService(mContext, 111, 
       intent, PendingIntent.FLAG_UPDATE_CURRENT); 
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(googleApiClient,5000, callbackIntent); 

public class RequestActivityService extends IntentService { 
public RequestActivityService() { 
    super("RequestActivityService"); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 

     if (ActivityRecognitionResult.hasResult(intent)) { 

      ActivityRecognitionResult result = ActivityRecognitionResult 
        .extractResult(intent); 

      DetectedActivity mostProbableActivity = result 
        .getMostProbableActivity(); 

      int confidence = mostProbableActivity.getConfidence(); 

      int activityType = mostProbableActivity.getType(); 
      String activityName = getNameFromType(activityType); 

     } 
} 

を使用して

//のGoogle APIクライアント**私は、活動の更新を取得するには、この方法を試してみました。アクティビティ情報の提供を開始しましたが、インテントサービスが時々呼び出されず、再びインテントを開始しました。だから私は正しい活動情報を示すことができません。

ウェイ2:

Awareness.SnapshotApi.getDetectedActivity(googleApiClient). 

       setResultCallback(new ResultCallback<DetectedActivityResult>() { 
        @Override 
        public void onResult(@NonNull DetectedActivityResult detectedActivityResult) { 
         if (!detectedActivityResult.getStatus().isSuccess()) { 
          Log.i("Could not get the activity",""); 
          return; 
         } 
         ActivityRecognitionResult ar = detectedActivityResult.getActivityRecognitionResult(); 
         DetectedActivity probableActivity = ar.getMostProbableActivity(); 
         String activityType = RequestActivityService.getNameFromType(probableActivity.getType()); 
         int activityConfidence = probableActivity.getConfidence(); 
        } 
       }); 

Awareness.API

を使用して

//のGoogle APIクライアントは**私たちは再帰的にこのメソッドを呼び出すと、頻繁に活動情報を取得することができ、このAPIを使用して、この別の方法を試してみました。しかし、時にはそれを提供し、時にはdetectedActivityResult.getStatus()も成功しませんでした。ステータスコードとステータスメッセージを取得しようとすると、ステータスコードは15を返し、ステータスメッセージはnullになります。

これらの方法は、GooglePlayService 10.2.0バージョンを使用していた以上、定期的にアクティビティを更新できませんでした。私はGithubのActivityRecognitionのGoogleサンプルをテストしました。それも同じ結果です。私は私の要求を達成するために何をするのか分からない。今は自分の要求と私が直面していることを理解することができますように。

+0

してください、あなたがやろうとし、どのようにしているかについて具体的に?それでは、何が問題なのですか?あなたがコードを含めると素晴らしいと助けになるだろう... –

+0

私は歩いたり、走っているように、自分のアプリユーザーの行動を表示しようとしています。これは私の必要条件です。 –

+0

AndroidのGoogle Fit not Activityクラスに代表されるユーザーのアクティビティについて話しています。右 ? –

答えて

0

応答を取得した後、再びコールこの方法:。

私はできるだけ早くデータを取得するためにつながることを0にdetectionIntervalMillisを設定することをお勧め(バッテリ消費を意識する)

ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(googleApiClient,o, callbackIntent); 
+0

私もこの方法を試しました。同じ結果。 –

+0

getWindow()を設定します。addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);私の活動で今私は中断や一時停止なしに定期的な更新を取得しています。 –

0

GoogleからのActivityRecognitionAPI定期的に更新を提供していません。私が気づいたことから、活動の信頼水準の変化や活動の変化があれば、それは更新を送るでしょう。それでも、データの読み込みがある種のノイズではないことを確認するには時間がかかります。

定期的な更新が必要な理由がわかりませんが、最後のアクティビティを現​​在のアクティビティとして受け入れ、変更にのみ対応するロジックを変更することをお勧めします(STILL - >IN_VEHICLE)。

0

長い時間のために変更がない場合は、それが起こるの変化まで、更新を送信しません...

関連する問題