2017-10-04 1 views
1

Ich arbeite an einer Unity-Anwendung, die die Schritte eines Benutzers verfolgt. Es verwendet ein Android-Plugin, das bereits von einem früheren Entwickler geschrieben wurde. Dieses Plugin greift auf die Android step counter sensor zu. Im Entwicklerportal wird angegeben, dass es "in API-Ebene 19 hinzugefügt" wurde.Wie kann ich feststellen, welche Android-Geräte den Schrittzähler verwenden können?

Die Schrittzähler-Funktion funktioniert auf meinem OnePlus 5 einwandfrei. Ich kann jedoch keine Erwähnung finden, dass der OnePlus 5 diesen Sensor hat. Es funktionierte auch auf einer Ehre 8, und wieder wird dieses Telefon mit diesem Sensor nicht erwähnt. Ich habe mich sogar direkt an Huawei gewandt und ausdrücklich erklärt, dass keines ihrer aktuellen Modelle einen Schrittzählersensor, sondern nur einen Beschleunigungsmesser hat.

Ist es möglich zu wissen, welche Geräte mit dem aktuellen Plugin verwendet werden können? Ist der Schrittzähler ein tatsächlicher physikalischer Sensor oder ein virtueller Sensor, der einfach den Beschleunigungssensor verwendet? Ist es nur auf bestimmte Geräte beschränkt oder könnte das aktuelle Plugin auf jedem Gerät funktionieren, auf dem Android 4.4 oder neuer mit dem Beschleunigungssensor läuft?

Antwort

1

Der Schrittzähler ist kein physischer Sensor, sondern ein virtueller Sensor oder wird als zusammengesetzter Sensor bezeichnet. Es verwendet den Beschleunigungsmesser und möglicherweise andere Sensoren, wenn diese unter der Haube verfügbar sind, um die Schritte zu berechnen. Zum Beispiel ist der lineare Beschleunigungssensor ein anderer Typ eines zusammengesetzten oder virtuellen Sensors, der eine lineare Beschleunigung von einem Beschleunigungsmesser erhält, indem er die Schwerkraftwerte von ihm subtrahiert.

Es sollte auf jedem Gerät mit Android 4.4 (und neuer) funktionieren, das mindestens einen Beschleunigungsmesser hat. Sie können die Verfügbarkeit on the fly in Ihrem Code (so etwas wie dieses) überprüfen:

Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER); 
     if (countSensor != null) { 
      sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI); 
     } else { 
      Toast.makeText(this, "Count sensor not available!", Toast.LENGTH_LONG).show(); 
     } 

Einzelheiten darüber, wie es wirklich funktioniert, lesen Sie bitte: https://source.android.com/devices/sensors/sensor-types#step_detector https://source.android.com/devices/sensors/sensor-types

Verwandte Themen