Подтвердить что ты не робот

Как получить доступ к датчику сердечного ритма в Android Wearable?

У меня возникают проблемы с доступом к датчику сердечного ритма на Moto 360.

Я пробовал следующие вещи:

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

а затем реализовать интерфейс SensorEventListener:

@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","--------------");

И что странно для меня, я вообще не получаю никаких сообщений (не только сердечного ритма).

Также я попробовал перечислить все датчики, и он не показывает датчик сердечного ритма в списке.

Конечно, я добавил persmissions

 <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" />

Любые идеи?

спасибо.

ш.

4b9b3361

Ответ 1

Как предложили @Kent и @Murphy, обновление SDK было решением. В моем случае мне нужно было отказаться от проекта и создать новый с нуля, так как даже с обновленным SDK старый не работал.

Ответ 2

Начну работать для меня после того, как я сделал следующее:

  • Удалено мое приложение из чата с помощью

    adb -s localhost:4444 uninstall com.example.android.wearable.jumpingjack
    
  • Добавлены разрешения для получения датчика сердечного ритма

    <uses-permission android:name="android.permission.BODY_SENSORS"/>
    
  • Установите минимальную и целевую версию SDK для соответствия часам

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

Запустил приложение снова. Я получил датчик частоты сердечных сокращений с Sensor.TYPE_HEART_RATE, и я начал получать его показания. Хотя они были далеки от хорошего. Было много чтений, но они были одинаковыми, ограничиваясь этими 5 значениями:

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}

В большинстве случаев я получал то же самое значение 53.0, которое, похоже, не было моей реальной частотой сердечных сокращений. Возможно, это был 77.

Ответ 3

У меня была довольно похожая проблема на Moto 360. Датчик всегда возвращал значение 0.0f в качестве значения.

Затем я подождал две минуты, и внезапно появились значения!= 0. Кажется, что этот датчик нуждается в "разминке", прежде чем показывать что-либо. Не удивительно, если учесть, что он измеряет то, что происходит примерно раз в секунду с единицей "удары в минуту". Он не может быть надежным, пока не пройдет одна или две минуты. И у каждого приложения есть свои собственные измерения: не имеет значения, работает ли еще одно приложение Heartbeat (например, вещь Moto Body).

Это также означает, что вы должны создать сервис для прослушивания датчика (и связующего, чтобы передать значение датчика в вашу деятельность или на ваш телефон).

Посмотрите на демонстрационный проект, который я поделил на github: https://github.com/upost/MyHeartbeat

Ответ 4

Итак, я пришел сюда с той же проблемой, и простым решением является удаление приложения из чата с помощью adb:

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

Затем просто переустановите его с помощью студии Android, затмения или того, что вы использовали изначально.

Благодаря Александру К. для этого решения