Как отправить данные в службу ActivityRecognition Intent Service без замены данных об активности?

Я работаю над приложением для отслеживания активности пользователей.

Я использовал API распознавания активности для отслеживания активности пользователя.

Я установил, что служба Intent будет вызываться для получения активности пользователя с заданным интервалом, например, каждые 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);
    }
}

Приведенный выше код работает нормально, если я не передал никаких собственных данных.

Я хочу отправить некоторые данные вместе с этим намерением. Я установил эти данные вместе с ожидаемым намерением. Но если я устанавливаю данные, я получаю только эти данные, а не данные о намерениях пользователя.

Я не хочу использовать общие настройки для хранения и извлечения их внутри службы намерений.

Пожалуйста, помогите мне решить эту проблему.


comment
Опубликуйте код, который вы используете для установки собственных данных в Intent.   -  person David Wasser    schedule 06.05.2015


Ответы (1)


Я бы не стал передавать это намерение дальше, а взял бы данные из вашего onHandleIntent и добавил их к другому намерению.

Я предполагаю, что вы пытаетесь передать это намерение какой-либо службе, которая хранит данные об активности в sqlite или что-то в этом роде... есть одна загвоздка.

Не используйте IntentService, потому что до или во время его работы телефон может уснуть, если вы не приобретете WakeLock. Ознакомьтесь с WakefulBroadcastReceiver, чтобы справиться с этим.

Другое решение — просто использовать BroadcastReceiver, так как телефон гарантированно не перейдет в спящий режим.

person Marian Paździoch    schedule 22.10.2015