首页 > 解决方案 > 智能手表上的心率监测器未在 onCreate 方法中启动

问题描述

我不认为我完全理解心率监测背后的代码。我创建了我的项目,这是我使用的代码。

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


        // Enables Always-on
        setAmbientEnabled();

        mMobvoiApiClient = new MobvoiApiClient.Builder(this)
                .addApi(Wearable.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();

        mSensorManager =
                (SensorManager)getSystemService(SENSOR_SERVICE);
        mHeartRate = mSensorManager.getDefaultSensor(
                Sensor.TYPE_HEART_RATE);


    }

我在这里连接到客户端并在此处获取默认传感器,将其声明为 TYPE_HEART_RATE。

protected void onResume() {
    super.onResume();
    mSensorManager.registerListener(this, mHeartRate,
            SensorManager.SENSOR_DELAY_NORMAL);
}

在 onResume 方法中,我注册了侦听器。

   public void onSensorChanged(SensorEvent sensorEvent) {

        Log.d("Test", "Got the heart rate (beats per minute) : " +
                String.valueOf(sensorEvent.values[0]));
    }

那么这种方法会在每次传感器数据发生变化时生成日志,对吗?请纠正我,如果我错了。

我的主要问题是我应该调用什么方法或者我应该使用哪个监听器来激活手表上的心率传感器。我显然错过了一些重要的事情,但不知道是什么。首先,我只想激活心率监测器以开始从中获取数据。

谢谢你的回答。

编辑:我已经在 AndroidManifest 文件中获得了使用权限。

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

编辑2:

我尝试添加两个按钮,一个用于注册侦听器,一个用于取消注册。当我尝试使用该startMeasure()方法注册它时,布尔值始终返回 Sensor Status:: Sensor registered: no

 public void OnClickBtn(View v){
        startMeasure();
    }

    public void OnClickBtnStop (View v){
        stopMeasure();
    }


    private void startMeasure() {
        boolean sensorRegistered = mSensorManager.registerListener(this, mHeartRate, SensorManager.SENSOR_DELAY_FASTEST);
        Log.d("Sensor Status:", " Sensor registered: " + (sensorRegistered ? "yes" : "no"));
    }

    private void stopMeasure() {
        mSensorManager.unregisterListener(this);
    }

它像这样与我的布局相关联

    <Button
        android:id="@+id/utrip"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="60dp"
        android:background="@color/blue"
        android:onClick="OnClickBtn"
        android:text="@string/start" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="100dp"
        android:background="@color/dark_red"
        android:text="@string/stop"
        android:onClick="OnClickBtnStop"/>

我也从 logcat 得到这个。

sphal namespace is not configured for this process.

我认为这与API有关。当我按下停止按钮时会发生这种情况。

标签: androidwear-osandroid-sensorsheartrate

解决方案


推荐阅读