2014-09-13 5 views
5

Hat jemand den Herzfrequenzsensor von der Moto 360 erfolgreich gelesen?Probleme beim Lesen des Herzfrequenzsensors von Moto 360 - Android Wear

mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE)); 
mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); 

ich eine Störung erhalte, die besagt, „Sensormanager: Sensor oder Hörer ist null“

Ich weiß, dass die Gear Live eine andere ID anders als Sensor.TYPE_HEART_RATE verwendet ... Ich frage mich, wenn das Der Fall mit dem Moto 360.

Ich habe einen Sensorwert von 65538 versucht, der sich selbst als "Wellness Sensor" meldet, aber auch keine Daten zurückgibt.

Jeder Rat würde geschätzt werden.

+0

Haben Sie dieses Problem vielleicht gelöst? – EyesClear

+0

Die Sensoren API, von meinen Erfahrungen damit, scheint unglaublich flockig. Hoffentlich mache ich etwas falsch und das ist nicht der Fall, aber es scheint einen deutlichen Mangel an Leuten zu geben, die Erfolg an dieser Front hatten. –

+0

Siehe auch meine Antwort auf einen anderen Thread http://stackoverflow.com/a/ 30947209/2029699 –

Antwort

1

Ich mache das gleiche auf meiner Moto 360 und ich bekomme den Sensor und die Herzfrequenz. Hast du die Erlaubnis für die Körperdaten:

verwendet Zulassungs android: name = "android.permission.BODY_SENSORS"

in Ihrem Manifest.xml?

+0

Ich habe Verwendungen-Erlaubnis in AndroidManifest.xml, aber kann nicht Herzfrequenz bekommen. SensorManager.getSensorList gibt Sensor.TYPE_HEART_RATE nicht zurück. – kazhik

+1

Ich habe SDK aktualisiert und es funktioniert! – kazhik

+0

@kazhik Ich habe das neueste SDK und es funktioniert nicht für mich. Ich sehe den Herzfrequenzsensor nicht in der Liste. Kannst du mir helfen? – EyesClear

1

Ich hatte das gleiche Problem beim Versuch, die Herzfrequenz von einem Moto 360 abzufragen, der Sensor war Null. Hat das gleiche wie Sie zur Arbeit, dass der Sensor zur Verfügung der Wellness-Sensor war:

sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); 

if (sensor == null) { 
    List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); 
    for (Sensor sensor1 : sensors) { 
    Log.i(TAG, sensor1.getName() + ": " + availableSensor.getType()); 
    } 
} 

65538 schien die richtige Art zu bedienen, so habe ich das.

Wellness Passive Sensor 65538 

A Reddit thread I found schlug dies der richtige Weg zu gehen. Ich schien davon zu lesen, aber sie waren nicht zuverlässig.

Mit ein bisschen mehr Forschung, entdeckte ich an open source project, die Sensordaten abfragt und anzeigt. Dies scheint nur manchmal zu funktionieren, daher behandle ich die Sensor-APIs als unzuverlässig und habe mein Projekt vorübergehend geparkt. Ich werde das in ein paar Monaten noch einmal wiederholen und meine Antwort aktualisieren, wenn ich glaube, dass die Sensor-APIs zuverlässiger sind.

1

Sensor.TYPE_HEART_RATE ist eigentlich die richtige ID. Ich hatte das gleiche Problem: Der Sensor war null, obwohl ich die BODY_SENSORS-Berechtigung im Manifest hatte. Ich habe es behoben, indem ich die App entfernt habe, die Uhr neu gestartet und zur Laufzeit die Berechtigung BODY_SENSORS angefordert habe (siehe https://developer.android.com/training/articles/wear-permissions.html). Danach bekam ich den Systemdialog für die Körpersensor-Erlaubnis und ich erhielt dann Updates vom Sensor. Ich hoffe, das hilft.

+0

Dies funktioniert! Lebensretter! – developeralways

0

Ich hatte das gleiche Problem mit Moto360 und ihr, wie ich es gelöst habe.

Ich habe alle aufgelisteten Lösungen versucht - die App zu installieren, das SDK zu aktualisieren, aber es funktioniert nicht für mich. Ich habe Berechtigungen für Körpersensoren in Manifest-Datei aufgenommen. Ich konnte den Herzfrequenzsensor in meiner Liste der verfügbaren Sensoren nicht sehen. Also ich glaube, es war ein Genehmigungs-Problem. API 23 und Android verwendet ein neues Berechtigungsmodell.

Von diesem Link: https://developer.android.com/training/articles/wear-permissions.html Es sagt - „Hinweis: Für eine Anwendung, das neue Berechtigungsmodell zu verwenden, einen Wert von 23 angeben, muss für beide verwendet-sdk-Element und compileSdkVersion.“

Ich habe meine Gradel-Skripte geändert, um sowohl minsdk als auch compliledsdk als 23. zu verwenden.

<uses-sdk android:minSdkVersion="23" 
      android:targetSdkVersion="23" 
      /> 

Und jetzt funktioniert es !!

0

Von android M Sie müssen sicherstellen, dass der Benutzer die Erlaubnis am first time the applications runs wird ermöglicht oder manuell an die App die Erlaubnis zu gehen und ermöglichen es

Verwandte Themen