2014-10-21 11 views
11

Ich habe Probleme beim Zugriff auf Herzfrequenzsensor auf einer Moto 360Zugriff auf Herzfrequenzsensor in Android Wearable?

Ich habe versucht, folgende Dinge:

Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); 
mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL); 

und dann SensorEventListener Schnittstelle implementieren:

@Override 
public void onSensorChanged(SensorEvent event) { 

     String TAG = "tag"; 
     Log.i(TAG, "--------------------------"); 
     Log.i(TAG, msg); 
     Log.i(TAG, ""+ event.sensor.getType()); 
     Log.i("live","--------------"); 

Und was seltsam ist mir I bekomme überhaupt keine Nachrichten (nicht nur die Herzfrequenz).

Auch ich habe versucht, alle Sensoren aufzulisten und es zeigt nicht Herzfrequenzsensor auf der Liste.

Natürlich habe ich persmissions hinzugefügt

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.watchtest" > 

<uses-feature android:name="android.hardware.type.watch" /> 
<uses-permission android:name="android.permission.BODY_SENSORS" /> 

Irgendwelche Ideen?

danke.

w.

+1

Haben Sie versucht, das SDK zu aktualisieren? [link] (http://stackoverflow.com/a/26322757/4159941) – Kent

+2

Ich stimme Kent zu, stellen Sie sicher, dass Ihr SDK auf dem neuesten Stand ist, jemand hatte ein ähnliches Problem behoben: http://stackoverflow.com/questions/ 25820771/having-trouble-lese-Herzfrequenzsensor-von-moto-360-android-wear # comment41398670_26322757 – Murphy

+0

@Kent Ist das Projekt irgendwie an das SDK gebunden? Da ich das neueste SDK hatte und es nicht funktionierte. Aber als ich ein neues Projekt erstellt habe, fängt es an zu arbeiten. – wonglik

Antwort

1

Wie @Kent und @Murphy vorgeschlagen, aktualisierte SDK war die Lösung. In meinem Fall musste ich das Projekt löschen und neu von Grund auf neu erstellen, da selbst mit dem aktualisierten SDK das alte nicht funktionierte.

+1

Können Sie diese Antwort akzeptieren? Auf diese Weise weiß jeder, dass es gelöst wurde. – Murphy

+0

@Murphy getan. Vielen Dank. – wonglik

+0

Welche Version von SDK funktioniert gut? –

2

Ich hatte ein ziemlich ähnliches Problem auf der Moto 360. Der Sensor gab immer 0.0f als Wert zurück.

Dann wartete ich zwei Minuten, und plötzlich Werte = 0 kam. Es scheint, dass dieser Sensor eine "Aufwärmphase" benötigt, bevor Sie etwas zeigen. Nicht wirklich erstaunlich, wenn man bedenkt, dass mit der Einheit "Beats per Minute" etwas gemessen wird, was ungefähr einmal pro Sekunde passiert. Es kann nicht zuverlässig sein, bevor ein oder zwei Minuten vergangen sind. Und jede App hat ihre eigene Messung: Es spielt keine Rolle, ob auch eine andere Heartbeat-App läuft (wie die Moto-Body-Sache).

Dies bedeutet auch, dass Sie einen Dienst erstellen müssen, um den Sensor zu hören (und eine Mappe, um den Wert des Sensors an Ihre Aktivität oder Ihr Telefon zu übergeben).

Haben Sie einen Blick auf die Demo Projekt, das ich auf Github geteilt: für mich https://github.com/upost/MyHeartbeat

5

begann zu arbeiten, nachdem ich das folgende tat:

  1. Uninstalled meine App von der Uhr mit

    adb -s localhost:4444 uninstall com.example.android.wearable.jumpingjack 
    
  2. Zusätzliche Berechtigungen, um den Herzfrequenzsensor

    zu erhalten
    <uses-permission android:name="android.permission.BODY_SENSORS"/> 
    
  3. die min und Ziel SDK Version Stellen Sie die Uhr

    android:minSdkVersion="20" android:targetSdkVersion="20" 
    

die App wieder in Betrieb genommen entsprechen. Ich habe den Herzfrequenzsensor mit Sensor.TYPE_HEART_RATE erhalten und ich habe damit begonnen, seine Messwerte zu erhalten. Obwohl sie alles andere als gut waren.Es gab eine Menge von Lesungen, aber sie waren genau das gleiche, beschränkt auf diese 5 Werte:

heartRate onSensorChanged values = [0.0], accuracy = 0, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0} 
heartRate onSensorChanged values = [53.0], accuracy = 2, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0} 
heartRate onSensorChanged values = [54.0], accuracy = 2, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0} 
heartRate onSensorChanged values = [55.0], accuracy = 2, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0} 
heartRate onSensorChanged values = [77.0], accuracy = 1, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0} 

Die meiste Zeit war ich gleich 53,0 Wert bekommen, die scheint nicht meine wirkliche Herzfrequenz zu sein. 77 könnte der eine gewesen sein.

0

So kam ich hier, mit dem gleichen Problem und die einfache Lösung ist es, die Anwendung von der Uhr mit der adb zu entfernen:

adb -s localhost:4444 uninstall com.*packagename* 

Dann einfach installieren Sie es erneut Android Studio mit, verdunkeln oder was auch immer Sie verwenden ursprünglich.

Danke an Alexander K für diese Lösung

Verwandte Themen