Как я могу получить доступ к датчику пульса на моих Huawei Watch 2, если это не оригинальный датчик Huawei?

Leafab

Я купил Huawei Watch 2, потому что работаю над приложением, которое считывает шаги и частоту сердечных сокращений. Прежде чем выбрать Google Fitness API, я хотел попробовать получить доступ к необработанным данным непосредственно с датчиков часов.

Кажется, что датчик частоты пульса не работает, что бы я ни пытался. Я уже поместил "uses-permission android: name =" android.permission.BODY_SENSORS "" в свой файл AndroidManifest. Моя основная деятельность расширяет класс WearableActivity и реализует интерфейс SensorEventListener.

Это то, что у меня есть в методе onCreate () для датчиков:

mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

    mSensorSteps = mSensorManager.getDefaultSensor(TYPE_STEP_COUNTER);
    mSensorHeart = mSensorManager.getDefaultSensor(TYPE_HEART_RATE);

    String sensor_error = getResources().getString(R.string.error_no_sensor);

    if (mSensorSteps == null) {
        mTextSensorSteps.setText(sensor_error);
    }
    if (mSensorHeart == null) {
        mTextSensorHeart.setText(sensor_error);
    }

Существует строковый ресурс, который говорит «Нет датчика», если он не может обнаружить датчик, и датчики шага и пульса имеют свои собственные текстовые представления, mTextSensorSteps и mTextSensorHeart.

В методах onStart () и onStop () я зарегистрировал и отменил регистрацию слушателей для датчиков.

Вот что у меня есть в методе onSensorChanged () (метод onAccuracyChanged () пуст):

@Override
public void onSensorChanged(SensorEvent event) {

    int sensorType = event.sensor.getType();
    float currentValue = event.values[0];

    switch (sensorType) {

        case Sensor.TYPE_STEP_COUNTER:
            // Event came from the steps sensor.
            mTextSensorSteps.setText(getResources().getString(R.string.steps_label, currentValue));
            break;

        case Sensor.TYPE_HEART_RATE:
            // Event came from the heart rate sensor.
            mTextSensorHeart.setText(getResources().getString(R.string.heart_label, currentValue));
            break;

        default:
            // do nothing
    }}

Это мои строковые ресурсы:

<string name="error_no_sensor">No Sensor</string>
<string name="heart_label">Heart: %1$.2f</string>
<string name="steps_label">Steps: %1$.2f</string>

Код работает для всех датчиков, кроме датчика частоты сердечных сокращений. Если в часах нет датчика, я получаю сообщение об ошибке «Нет датчика». Если я попробую с гироскопом, все заработает. Если я попробую с акселерометром, все заработает. Когда я пишу TYPE_HEART_RATE, текстовое представление просто показывает «Сердце:% 1 $ .2f».

Я даже пробовал использовать числовые идентификаторы датчиков вместо имен, я знаю, что TYPE_STEP_COUNTER - 19, а TYPE_HEART_RATE - 21. Тот же результат: он работает с шагами, гироскопом (я думаю, что его ID 4 или что-то в этом роде), акселерометром, но не с датчиком сердечного ритма. Я даже попытался изменить случай Switch в методе onSensorChanged (), чтобы он работал следующим образом:

if (sensorType == 21) {
        mTextSensorHeart.setText(getResources().getString(R.string.heart_label, currentValue));
    }

Я снял корпус переключателя и просто использовал то же самое. Не работает только датчик пульса.

Я создал еще один проект для Android, который показывает список датчиков, которые есть в часах, и заметил, что датчик пульса - единственный, у которого нет "vendor =" Huawei SensorHub "". Вот что я нашел:

{sensor
name="ADPD153GGRI",
vendor="ANALOG DEVICES",
version=1,
type=21,
maxRange=255.0
...
}

в то время как все остальные датчики имеют в качестве производителя «Huawei SensorHub».

Я не могу найти модель датчика на сайте Analog Devices ( это самая близкая из найденных мной , но она не особо помогает), и отсюда я действительно не знаю, что еще делать. Может быть, поскольку это не оригинальный датчик huawei, массив значений [0] события датчика не работает?

Я действительно не знаю, что мне делать.

Заправлен ядерным топливом

В API 23 датчик тела перешел на разрешение выполнения. Если вы зайдете в настройки, приложения и уведомления, информацию о приложении, выберите свое приложение, а затем разрешения. Вы должны увидеть, что разрешение датчика отключено. Вы можете включить его там для тестирования, но следует реализовать модель разрешений времени выполнения, описанную здесь. https://developer.android.com/training/articles/wear-permissions

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  5. 5

    How to click an array of links in puppeteer?

  6. 6

    Merging legends in plotly subplot

  7. 7

    ViewPager2 мигает / перезагружается при смахивании

  8. 8

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  9. 9

    How to normalize different curves drawn with geom = "step" when using stat_summary

  10. 10

    无法通过Vue在传单中加载pixiOverlay

  11. 11

    как я могу удалить vue cli 2?

  12. 12

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  13. 13

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  14. 14

    Elasticsearch - Нечеткий поиск не дает предложения

  15. 15

    Single legend for Plotly subplot for line plots created from two data frames in R

  16. 16

    Описание моего типа Parser как серии преобразователей монад

  17. 17

    Как изменить цвета запятых и скобок в VS Code

  18. 18

    Сброс значения <input type = "time"> в Firefox

  19. 19

    Почему прокси в vue.config.js 404

  20. 20

    Как установить параметр -noverify с gradle ktx для робоэлектрических тестов Android?

  21. 21

    В чем разница между ifstream, ofstream и fstream?

популярныйтег

файл