Google Fitness API: доступ из службы Android

Я успешно экспериментировал с извлечением данных из Sensors API (счетчик шагов) с использованием примеров SDK. Однако, когда я пытаюсь сделать то же самое из службы, я не получаю обратных вызовов дельты подсчета шагов. Весь пример кода, который я вижу, всегда говорит о создании GoogleApiClient с использованием значения Activity «this», а не значения «this» службы. Есть идеи, поддерживается ли доступ через службу?


person earlence    schedule 08.02.2015    source источник


Ответы (2)


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

Итак, что я сделал, так это то, что я создал классы для функций датчика и истории соответственно, а затем я использую локальные трансляции, вы, вероятно, можете сделать это и с привязкой, а затем в onConnectionFail() я говорю активности, что она должна подсказывать пользователю.

У меня другие проблемы с фит-апи, но сервисная часть работает нормально.

person Yokich    schedule 22.07.2015

Это не сложно, но нужно много работать.

По сути, этот метод "GooglePlayServicesUtil.getErrorDialog" не будет работать в Service. (Это настоящая проблема. Почему бы и нет? Кто разрабатывает это shXt? Совершенно бессмысленно.) Но если вы проверите еще раз, вы увидите, что в ConnectionResult есть метод "startResolutionForResult".
Вы можете использовать его заменить "GooglePlayServicesUtil.getErrorDialog".

И... извините, это не может решить вашу проблему.

Потому что вам все еще нужна активность и ее метод "onActivityResult". Даже если вы можете получить статическую активность, она все равно не будет работать, если вы не предоставите этой активности настраиваемый метод "onActivityResult".

Так? Создаете действие с помощью специального метода «onActivityResult» и распространяете его на всю свою деятельность? ... Я шучу.

В моем случае я даю всей своей Activity возможность выполнять динамическую работу в своем жизненном цикле. И это моя активность:

public abstract class HTBaseActivity extends FragmentActivity {

public static Activity ACT = null;

public CallByActivityResult callByResult;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    ACT = this;

}


@Override
protected void onActivityResult(int value1, int value2, Intent intent) {
    // TODO Auto-generated method stub
    super.onActivityResult(value1, value2, intent);

    if(callByResult != null){
        callByResult.onActivityResult(value1, value2, intent);
    }
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    ACT = this;
}

Это действие предназначалось для чего-то другого, а не для «Использования фитнес-API в сервисе». Но это действительно работает.

P.S. CallByActivityResult - это интерфейс с методом "onActivityResult(int value1, int value2, Intent intent)".

person hsu.tw    schedule 25.11.2015