12

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

そして、私にとって奇妙なことは、メッセージがまったく表示されないことです(心拍数だけでなく)。

また、すべてのセンサーをリストしようとしましたが、リストに心拍数センサーが表示されません。

もちろん、私は許可を追加しました

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

何か案は ?

ありがとう。

w。

4

4 に答える 4

6

私が次のことをした後、私のために働き始めました:

  1. 時計からアプリをアンインストールしました

    adb -s localhost:4444 uninstall com.example.android.wearable.jumpingjack
    
  2. 心拍センサーを取得する権限を追加

    <uses-permission android:name="android.permission.BODY_SENSORS"/>
    
  3. ウォッチに一致する最小およびターゲット 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がその1つであった可能性があります。

于 2015-06-19T21:01:50.033 に答える
2

Moto 360 でもよく似た問題がありました。センサーは常に値として 0.0f を返しました。

それから 2 分間待ったところ、突然 values!=0 が表示されました。このセンサーは、何かを表示する前に「ウォームアップ」が必要なようです。「1分あたりの拍数」という単位を使用して、1秒に約1回発生することを測定することを考慮に入れると、それほど驚くことではありません. 1、2 分が経過する前に信頼することはできません。また、各アプリには独自の測定値があります。別の心拍アプリも実行されているかどうかは問題ではありません (Moto Body のようなものです)。

これはまた、センサーをリッスンするサービス (およびセンサーの値をアクティビティまたは電話に渡すためのバインダー) を作成する必要があることを意味します。

私が github で共有したデモ プロジェクトをご覧ください: https://github.com/upost/MyHeartbeat

于 2015-04-01T15:54:00.070 に答える
1

@Kent と @Murphy が提案したように、更新された SDK が解決策でした。私の場合、更新されたSDKの古いものが機能しなかったため、プロジェクトを削除して最初から新しいものを作成する必要がありました。

于 2014-10-23T05:07:52.857 に答える
0

だから、私は同じ問題でここに来ました。簡単な解決策は、adbを使用して時計からアプリケーションを削除することです:

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

次に、android studio、eclipse、または最初に使用したものを使用して再インストールします。

このソリューションを提供してくれたAlexander Kに感謝します

于 2015-11-26T14:38:20.337 に答える