2016-04-21 8 views
3

Ich muss die Herzfrequenz des Benutzers in diesem Moment lesen. Ich habe versucht, diesen Code in meiner Haupttätigkeit im Wear-Projekt zu verwenden. Dieser CodeSo lesen Sie die Herzfrequenz von Android Wear

 
public class MainActivity extends WearableActivity implements SensorEventListener { 

    private static final String TAG = "MainActivity"; 
    private TextView mTextViewHeart; 
    SensorManager mSensorManager; 
    Sensor mHeartRateSensor; 
    SensorEventListener sensorEventListener; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mTextViewHeart = (TextView) findViewById(R.id.heart); 
     mSensorManager = ((SensorManager) getSystemService(SENSOR_SERVICE)); 
     mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); 
     mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL); 
     Log.i(TAG, "LISTENER REGISTERED."); 
     mTextViewHeart.setText("Something here"); 


     mSensorManager.registerListener(sensorEventListener, mHeartRateSensor, mSensorManager.SENSOR_DELAY_FASTEST); 
    } 


    public void onResume(){ 
     super.onResume(); 
    } 

    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
     Log.d(TAG, "onAccuracyChanged - accuracy: " + accuracy); 
    } 

    public void onSensorChanged(SensorEvent event) { 
     if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) { 
      String msg = "" + (int)event.values[0]; 
      mTextViewHeart.setText(msg); 
      Log.d(TAG, msg); 
     } 
     else 
      Log.d(TAG, "Unknown sensor type"); 
    } 

} 

funktioniert einfach nicht, mir einen Fehler geben zu sagen:

 
E/SensorManager﹕ sensor or listener is null 

Es funktioniert gut, wenn ich etwas anderes als der Herzfrequenzsensor verwenden.

Ich verwende:

  • LG G4 mit Android API-Ebene 23
  • LG Urbane sehen (die ich kenne einen Herzfrequenzsensor hat) mit Wear API-Ebene 23

Danke für deine Hilfe.

+0

versuchen Sie diese Frage ... http: //stackoverflow.com/questions/26489281/how-to-access-heart-rate-sensor-in-android-wearable –

Antwort

2

Ich sah das gleiche Problem, wie Sie in this question sehen können. Wir haben die gleichen Verschleiß Geräte, so dass ich bin fast sicher, dass Sie diese auf Verschleiß AndroidManifest.xml verpasst haben:

<uses-permission android:name="android.permission.BODY_SENSORS" /> 

Auch sollte Ihre gehen zu Berechtigungen in Einstellungen, um, wenn diese Berechtigung zu überprüfen aktiviert.

Sie können mein Projekt auf GitHub überprüfen, die für jetzt arbeitet.

+0

Hallo! Ich habe tatsächlich die Erlaubnis in meinem Wear-Manifest und es funktioniert nicht ... Ich werde dein Projekt überprüfen. Vielen Dank! –

+0

Wissen Sie, wie Sie Daten an den Sensor von adb –

+0

@prathamkesarkar übergeben Hallo! Entschuldigung für die späte Antwort. Ich habe das nicht versucht, also kann ich dir nicht helfen. –

1

Tatsächlich implementieren Sie die SensorEventListener-Schnittstelle und erstellen eine Instanz von SensorEventListener, ohne sie zu initialisieren.

initialisieren entweder den Sensor:

SensorEventListener sensorEventListener = new SensorEventListener(){ ... }; 

oder entfernen und verwenden "this":

mSensorManager.registerListener(sensorEventListener, mHeartRateSensor, mSensorManager.SENSOR_DELAY_FASTEST); 

Änderung es zu:

mSensorManager.registerListener(this, mHeartRateSensor, mSensorManager.SENSOR_DELAY_FASTEST); 
0

Die Berechtigungen, was mich hat jetzt ein paar Mal erwischt. Während ich noch Code implementieren muss, um die Berechtigung zur Verwendung der Sensoren anzufordern, besteht eine einfache Problemumgehung darin, Einstellungen auf dem Wearable vorzunehmen, dann Berechtigungen auszuwählen und Ihre Anwendung zu lokalisieren. Wenn Sie auf Ihre Anwendung klicken, werden Sie feststellen, dass die Sensoren deaktiviert sind. Klicken Sie einfach darauf, um sie zu aktivieren. Sollte dann funktionieren!

Verwandte Themen