Es ist ein bekanntes Problem, dass viele Android-Handys den Beschleunigungsmesser ausschalten, wenn die screen goes off. Etwas scheint sich jedoch mit Android Fit (der App) geändert zu haben. Fit zählt die Schritte auch dann fort, wenn der Bildschirm ausgeschaltet wird. Wenn Fit installiert ist, dann werden die Ereignisse für Schritt angehoben innerhalb der Fit-Umgebung zu zählen, und ich bin in der Lage, sie zu erfassen mitSchrittzähler in Android: immer an?
Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
.setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE)
ich dies auf einem Samsung S4 getestet haben und auf einem OnePlus One und in beiden Fällen die Schritte werden gezählt. Wie machen sie das? Welche Android-Klassen verwenden sie? Mein Verständnis ist, dass die seit Kitkat verfügbare Methode die Implementierung eines SensorEventListeners ist. Zum Beispiel stellt theelfismike den Code implements this zur Verfügung. Bei vielen Telefonen hört die Schrittzählung jedoch auf, wenn der Bildschirm ausgeschaltet wird. Interessanterweise scheint die Zählung nicht zu stoppen, wenn die Google Fit App installiert ist (daher nehme ich an, dass sie den Beschleunigungsmesser aktiviert lassen).
Fehle ich etwas? Ist es den sterblichen Programmierern möglich, Zählschritte nach dem Ausschalten des Bildschirms zu behalten? Danke!
Danke @simekadam. Was Sie sagen, ist richtig. Was ich jedoch nicht verstehe ist, wie sie es machen. Die einzige Art, wie ich den Schrittzähler auf vielen Telefonen laufen lassen kann, ist eine vollständige Sperre, die nicht wirklich energieeffizient ist. Die Teilwakelocks wie WakefulBroadcastReceiver scheinen von den meisten Beschleunigungsmessern ignoriert zu werden. Deshalb frage ich mich, wie sie das effizient machen. – FabioC
@FabioCiravegna könnten Sie bitte mehr Code zu Ihrer Frage posten? Das könnte mir helfen, dein Problem zu lösen. Du startest deinen Stepcounter von einem WakefulBroadcastReceiver?Starten Sie Ihren Aufzeichnungsdienst mit startWakefulService? Erwerben Sie dann auch einen separaten Wakelock für Ihren Service? (WakeFullBroadcastReceiver gibt seine WakeLock nach 60 Sekunden) – simekadam
vielen Dank für das Angebot zu helfen. Ich habe ein einfaches Beispiel auf [link] (https://github.com/fabcira/step_counter_with_wakeLock) Github erstellt. Es ist noch einfacher als der, den ich vorher erwähnt habe. Die Hauptaktivität registriert den Sensor und richtet einen Teil-Wakelock ein. Dann beginne ich die Aktivität. Der step_counter funktioniert. Wenn ich das Telefon ausschalte, hört es auf. Ich habe jedoch einen Dienst erstellt, der prüft, ob der wakeLock eingeschaltet ist. Es ist. Aber der Schrittzähler ist ausgeschaltet. Die Einrichtung prüft auch, ob das Telefon über den Hardware-Schrittzähler verfügt. Meine hat es. Ich bin verwirrt. Jede Hilfe ist willkommen. Vielen Dank! – FabioC