How to access heart rate sensor in Android Wearable?

前端 未结 4 1553
名媛妹妹
名媛妹妹 2020-12-10 13:32

I am having problems accessing heart rate sensor on Moto 360.

I tried following things :

Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(S         


        
相关标签:
4条回答
  • 2020-12-10 13:43

    Started to work for me after I did the following:

    1. Uninstalled my app from the watch with

      adb -s localhost:4444 uninstall com.example.android.wearable.jumpingjack
      
    2. Added permissions to get the heart rate sensor

      <uses-permission android:name="android.permission.BODY_SENSORS"/>
      
    3. Set the min and target SDK version to match the watch

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

    Started the app again. I received the heart rate sensor with Sensor.TYPE_HEART_RATE and I started to receive its readings. Although they were far from good. There were a lot of readings, but they were just the same, limited to these 5 values:

    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}
    

    Most of the time I was getting the same 53.0 value which doesn't seem to be my real heart rate. 77 could have been the one.

    0 讨论(0)
  • 2020-12-10 13:47

    I had quite a similar problem on the Moto 360. The sensor always returned 0.0f as a value.

    Then I waited for two minutes, and suddenly values!=0 came in. It seems that this sensor needs a "warmup" before showing anything. Not really astonishing if you take into account that it measures something happening roughly once a second with the unit "beats per minute". It cannot be reliable before one or two minutes have passed. And each app has its own measurement: It doesn't matter if another heartbeat app is also running (like the Moto Body thing).

    This also means that you must create a service to listen to the sensor (and a binder to pass the sensor's value to your activity or your phone).

    Have a look at the demo project I shared on github: https://github.com/upost/MyHeartbeat

    0 讨论(0)
  • 2020-12-10 13:49

    As @Kent and @Murphy suggested, updated SDK was the solution. In my case I needed to drop the project and create new from scratch as even with updated SDK old one did not work.

    0 讨论(0)
  • 2020-12-10 13:50

    So, I came here, with the same problem and the simple solution is to remove the application from the watch using the adb:

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

    Then simply reinstall it using android studio, eclipse or whatever you used originally.

    Thanks to Alexander K for this solution

    0 讨论(0)
提交回复
热议问题