2016-04-21 32 views
3

我需要在此刻读取用户的心率。我尝试使用位于Wear项目主要活动中的代码。如何阅读Android Wear的心率

 
public class MainActivity extends WearableActivity implements SensorEventListener { 

    private static final String TAG = "MainActivity"; 
    private TextView mTextViewHeart; 
    SensorManager mSensorManager; 
    Sensor 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(TAG, "LISTENER REGISTERED."); 
     mTextViewHeart.setText("Something here"); 


     mSensorManager.registerListener(sensorEventListener, mHeartRateSensor, mSensorManager.SENSOR_DELAY_FASTEST); 
    } 


    public void onResume(){ 
     super.onResume(); 
    } 

    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
     Log.d(TAG, "onAccuracyChanged - accuracy: " + accuracy); 
    } 

    public void onSensorChanged(SensorEvent event) { 
     if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) { 
      String msg = "" + (int)event.values[0]; 
      mTextViewHeart.setText(msg); 
      Log.d(TAG, msg); 
     } 
     else 
      Log.d(TAG, "Unknown sensor type"); 
    } 

} 

这段代码根本就没有工作,给我一个错误说:

 
E/SensorManager﹕ sensor or listener is null 

如果我用别的,但心脏速率传感器,它工作正常。

我使用:

  • LG G4与Android API级别23
  • LG文雅的腕表(我知道有一个心脏速率传感器)由于磨损API级别23

谢谢您的帮助。

+0

试试这个问题... http://stackoverflow.com/questions/26489281/how-to-access-heart-rate-sensor-in-android-wearable –

回答

2

我面临同样的问题,你可以在this question看到。我们有相同的磨损设备,所以我几乎可以肯定,你已经错过了这个您磨损的AndroidManifest.xml

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

而且,你应该去权限设置中,以检查是否该权限已启用。

你可以在GitHub上查看我的项目,该项目目前正在开展。

+0

你好!我实际上在我的Wear清单中有权限,并且它不起作用...我将检查您的项目。谢谢! –

+0

你知道如何将数据从adb传递到传感器 –

+0

@prathamkesarkar嗨!这么晚才回复很抱歉。我没有尝试过,所以我不能帮你。 –

1

实际上,您正在实现SensorEventListener接口并创建SensorEventListener的一个实例,而无需初始化它。

要么初始化传感器:

SensorEventListener sensorEventListener = new SensorEventListener(){ ... }; 

或删除它,并用 “这个”:

mSensorManager.registerListener(sensorEventListener, mHeartRateSensor, mSensorManager.SENSOR_DELAY_FASTEST); 

将其更改为:

mSensorManager.registerListener(this, mHeartRateSensor, mSensorManager.SENSOR_DELAY_FASTEST); 
0

权限的事情现在已经赶上我出去了几次。虽然我尚未实现代码以请求使用传感器的权限,但一个简单的解决方法是进入可穿戴设备,然后选择权限并找到您的应用程序。当你点击你的应用程序时,你会注意到传感器被禁用,所以只需点击它启用它们。应该工作吧!