2016-09-19 4 views
1

Я делаю приложение для шагомер для Android. Принцип работы следующим образом: При первом запуске приложения запускается служба, которая работает в режиме переднего плана. Программа запрашивает у пользователя учетную запись Google для входа в систему. Если все в порядке, то создается объект GoogleApiClient. Затем в случае успешного соединения создается Fitness.SensorsApi, в котором я запрашиваю только количество шагов системы. Поскольку я храню не много данных, вместо базы данных я использую SharedPreferences и записываю там новые данные. Если приложение запущено, mainActivity подключается к SharedPreferences каждую секунду, чтобы отображать новые значения на экране. Вся работа не плохая. Но иногда перестаешь набирать количество шагов. Это может происходить в течение дня, иногда это происходит после сброса счетчиков каждый день в 00:00, а иногда и несколько дней, чтобы работать без проблем. Помогает только полностью перезапустить приложение.API GoogleFit иногда не работает

И несколько раз было то, что данные не отображаются на экране, но служба работает и записывает данные. В этом случае после перезагрузки приложения я сразу получил данные за весь период (зависающий экран). Сама услуга на 100% жива, потому что я отправляю сообщение в журнале каждые 5 секунд. Если кто-то сталкивается с подобным, пожалуйста, помогите, что может быть причиной. Может ли GoogleApiClient терять соединение или что-то еще. Как отслеживать ошибку? Я буду очень благодарен.

ответ

0

Отметьте, что documentation Google Fit о том, как подключить ваше приложение для Android в Google. Убедитесь, что вы правильно настроили это руководство в своем проекте, особенно на этапе 5, где вы находитесь Connect to the fitness service. Для получения дополнительной информации, проверьте это SO question.

Вот пример кода о том, как можно получить доступ к Sensors API из точки входа в фитнес.

GoogleApiClient client = new GoogleApiClient.Builder(context) 
.addApi(Fitness.SENSORS_API) 
... 
.build(); 
client.connect(); 

PendingResult<Status> pendingResult = Fitness.SensorsApi.add(
client, 
new SensorRequest.Builder() 
.setDataType(DataType.TYPE_STEP_COUNT_DELTA) 
.setSamplingDelay(1, TimeUnit.MINUTES) // sample once per minute 
.build(), 
myStepCountListener); 

Для получения дополнительной информации, проверьте эти ссылки.

Смежные вопросы