Jest to znany problem, że wiele telefonów z Androidem wyłącza akcelerometr, gdy screen goes off. Wygląda jednak na to, że coś się zmieniło w Androidzie Fit (aplikacja). Fit utrzymuje zliczanie kroków nawet po wyłączeniu ekranu. Jeśli jest zainstalowany Fit, wtedy zdarzenia są podniesione na etapie liczenia w Fit środowisku i jestem w stanie uchwycić je za pomocąLicznik kroków w Androidzie: zawsze włączony?
Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
.setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE)
ja testowałem to na Samsung S4 i na OnePlus One i w obu przypadkach schodach są policzone. Jak oni to robią? Z jakich klas Android korzystają? Rozumiem, że dostępną metodą wprowadzoną od KitKat jest wdrożenie SensorEventListener. Na przykład thefelismike dostarcza kod, który jest implements this. Jednak w wielu telefonach liczenie kroków kończy się po wyłączeniu ekranu. Co ciekawe, liczenie nie kończy się, jeśli zainstalowana jest aplikacja Google Fit (dlatego domyślam się, że akcelerometr jest włączony).
Czy brakuje mi czegoś? Czy funkcja śmiertelnego programowania jest dostępna dla liczenia kroków po wyłączeniu ekranu? Dzięki!
Dzięki @ simimadam. To, co mówisz, jest poprawne. Jednak nie rozumiem, jak to robią. Jedynym sposobem na utrzymanie licznika kroków w wielu telefonach jest uzyskanie pełnego zamka, który nie jest tak naprawdę energooszczędny. Częściowe wakeloki, takie jak WakefulBroadcastReceiver, wydają się być ignorowane przez większość akcelerometrów. Właśnie dlatego zastanawiam się, w jaki sposób robią to w skuteczny sposób. – FabioC
@FabioCiravegna Czy mógłbyś dodać więcej kodu do swojego pytania? To może mi pomóc w rozwiązaniu Twojego problemu. Zaczynasz swój stepcounter od WakefulBroadcastReceiver?Czy rozpoczynasz swoją usługę nagrywania za pomocą startWakefulService? Czy zdobędziesz także oddzielny wakelok dla swojej usługi? (WakeFullBroadcastReceiver wypuszcza swój wakelock po 60 sekundach) – simekadam
wielkie dzięki za pomoc. Stworzyłem prosty przykład na [link] (https://github.com/fabcira/step_counter_with_wakeLock) Github. Jest jeszcze prostsze niż ten, o którym wspominałem wcześniej. Główna aktywność rejestruje czujnik i ustawia częściową wakelock. Wtedy zaczynam aktywność. The step_counter działa. Kiedy wyłączam telefon, przestaje działać. Jednak stworzyłem usługę, która sprawdza, czy funkcja WakeLock jest włączona. To jest. Ale licznik kroków jest wyłączony. Konfiguracja sprawdza również, czy telefon ma licznik kroków sprzętowych. Mój to ma. Jestem zdziwiony. Każda pomoc jest mile widziana. Dzięki! – FabioC