我需要在那一刻读取用户的心率。我尝试使用位于Wear项目主要 Activity 中的此代码。
公共(public)类MainActivity扩展了WearableActivity,它实现了SensorEventListener {
私有(private)静态最终String TAG =“MainActivity”;
私有(private)TextView mTextViewHeart;
SensorManager mSensorManager;
传感器mHeartRateSensor;
SensorEventListener sensorEventListener;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextViewHeart =(TextView)findViewById(R.id.heart);
mSensorManager =(((SensorManager)getSystemService(SENSOR_SERVICE));;
mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
mSensorManager.registerListener(this,mHeartRateSensor,SensorManager.SENSOR_DELAY_NORMAL);
Log.i(标签,“LISTENER已注册。”);
mTextViewHeart.setText(“这里有事”);
mSensorManager.registerListener(sensorEventListener,mHeartRateSensor,mSensorManager.SENSOR_DELAY_FASTEST);
}
公共(public)无效onResume(){
super.onResume();
}
public void onAccuracyChanged(Sensor sensor,int precision){
Log.d(TAG,“onAccuracyChanged-精度:” +精度);
}
公共(public)无效onSensorChanged(SensorEvent事件){
如果(event.sensor.getType()== Sensor.TYPE_HEART_RATE){
字符串msg =“” +(int)event.values [0];
mTextViewHeart.setText(msg);
Log.d(TAG,msg);
}
别的
Log.d(TAG,“未知传感器类型”);
}
}
这段代码根本无法正常工作,给我一个错误消息:
E/SensorManager:传感器或监听器为空
如果我使用除心率传感器以外的任何其他功能,它都可以正常工作。
我在用:
感谢您的帮助。
最佳答案
我遇到了与this question中相同的问题。我们拥有相同的穿戴设备,因此我几乎可以确定您在穿戴AndroidManifest.xml 上错过了这个:<uses-permission android:name="android.permission.BODY_SENSORS" />
另外,您应该转到“设置”中的“权限”,以检查该权限是否已启用。
您可以在GitHub上检查我的项目,该项目目前正在运行。