Известно, что многие телефоны Android выключили акселерометр, когда screen goes off. Однако, похоже, что-то изменилось с Android Fit (приложение). Fit продолжает отсчет шагов, даже когда экран гаснет. Если Fit установлен, то события возникают на этапе подсчета в Fit среды и я могу захватить их с помощьюСчетчик шагов в Android: всегда включен?
Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
.setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE)
Я испытал это на Samsung S4 и на OnePlus One и в обоих случаях шаги считаются. Как они это делают? Какие классы Android они используют? Я понимаю, что доступный метод, введенный с момента создания Kitkat, заключается в реализации SensorEventListener. Например, theelfismike предоставляет код, который implements this. Однако на многих телефонах счетчик шагов останавливается, когда экран выключается. Интересно, что подсчет не прекращается, если установлено приложение Google Fit (поэтому я думаю, что они поддерживают акселерометр).
Я что-то упустил? Является ли функциональность отслеживания шагов подсчета после экрана доступными для смертных программистов? Спасибо!
Спасибо @simekadam. То, что вы говорите, правильно. Однако я не понимаю, как они это делают. Единственный способ, с помощью которого я могу следить за шагом на многих телефонах, - это получить полную блокировку, которая не является энергоэффективной. Частичные wakelocks, такие как WakefulBroadcastReceiver, по-видимому, игнорируются большинством акселерометров. Вот почему мне интересно, как они делают это эффективно. – FabioC
@FabioCiravegna не могли бы вы разместить больше кода на ваш вопрос? Это может помочь мне решить вашу проблему. Вы начинаете свой stepcounter из WakefulBroadcastReceiver?Вы начинаете свою службу записи с помощью startWakefulService? Вы приобретаете раздельный вакелон для своего обслуживания, а затем? (WakeFullBroadcastReceiver выпускает свой wakelock через 60 секунд) – simekadam
большое спасибо за предложение помочь. Я создал простой пример в [link] (https://github.com/fabcira/step_counter_with_wakeLock) Github. Это даже проще, чем тот, о котором я упоминал ранее. Основная активность регистрирует датчик и устанавливает частичный валок. Затем я начинаю работу. Работает step_counter. Когда я выключаю телефон, он останавливается. Однако я создал службу, которая проверяет, включен ли wakeLock. Это. Но счетчик шагов выключен. Настройка также проверяет, есть ли у телефона счетчик аппаратного шага. У меня это есть. Я сбит с толку. Любая помощь приветствуется. Благодаря! – FabioC