0

ユーザーアクティビティ追跡アプリケーションに取り組んでいます。

Activity Recognition API を使用してユーザー アクティビティを追跡しました。

たとえば、20秒ごとなど、指定された間隔でユーザーアクティビティを取得するために、インテントサービスが呼び出されるように設定しました。

以下は私のアクティビティ認識インテントサービスクラスです:

/**
 * Called when a new activity detection update is available.
 */
@Override
protected void onHandleIntent(Intent intent) {   
   // mPId = intent.getStringExtra("PID");

--- ここで保留中のインテントとともに追加でデータを送信すると、ユーザー アクティビティのインテント データが取得されません。ユーザー アクティビティの意図データが自分のデータに置き換えられる

    // If the intent contains an result data
    if (ActivityRecognitionResult.hasResult(intent)) {
        // Get the update
        ActivityRecognitionResult result = ActivityRecognitionResult
                .extractResult(intent);

        // Log the update
        saveActivityRecognitionResult(result);
    }
}

独自のデータを渡していない場合、上記のコードは正常に機能します。

このインテントと一緒にデータを送信したいと思います。保留中の意図とともにそのデータを設定します。しかし、データを設定すると、ユーザーアクティビティの意図データではなく、そのデータのみが受信されます。

共有設定を使用して、インテント サービス内で保存および取得したくありません。

この問題を解決するために私を助けてください。

4

1 に答える 1

0

このインテントをこれ以上渡すことはしませんが、データを取得しonHandleIntentて他のインテントに追加します。

このインテントを、アクティビティ データを sqlite などに保存するサービスに渡そうとしていると思いますが、問題があります。

IntentServiceを取得しないと、仕事の前や最中に電話がスリープ状態になる可能性があるため、使用しないでくださいWakeLock。それに対処するには、 WakefulBroadcastReceiverに慣れてください。

もう1つの解決策は、BroadcastReceiver電話がスリープ状態にならないことが保証されているため、そのまま使用することです.

于 2015-10-22T10:28:54.370 に答える