如何访问Galaxy S5心率传感器?
在Samsung的编程指南 (第77-81页)中,有关如何使用S Health Service SDK设置和获取心率信息的参考。 但是,我希望直接访问Galaxy S5的心率传感器,就像您可以访问加速度计,陀螺仪,光传感器以及其他传感器一样。 我为三星齿轮现场发现了这个例子 ,但我找不到任何关于Galaxy S5的例子。
是否可以直接访问Galaxy S5的心率传感器? 有没有人有关于如何做的代码示例?
谢谢。
您无法从Samsung Galaxy S5获取原始心率监测数据。
需要传感器扩展SDK才能从Google Android不支持的传感器获取原始数据, 此页面指出:
Sensor Extension SDK具有以下限制:
- HRM传感器IR / RED信号
- 需要安装Android 5.0(Lollipop API等级21)或更高版本的设备。
- Galaxy S5和Galaxy S5mini不包括在内 。
- 仅支持具有HRM传感器的三星设备。
使用SensorManager.getDefaultSensor(65562)
直接访问HRM传感器。
三星发布了名为SensorExtension的SDK。 您必须申请,他们会向您发送一封包含zip文件的电子邮件。
SensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE)
效果很好。
但
此传感器需要权限android.permission.BODY_SENSORS。 如果应用程序没有此权限,SensorManager.getSensorsList和SensorManager.getDefaultSensor将不会返回它。
(来自文档)
因此,如果您的读者尝试了getDefaultSensor但没有成功,这很可能就是错误。
要访问和启用红外灯:
-
在Manifest使用
使用权限android:name =“android.permission.BODY_SENSORS”/>
-
在Activity上实现SensorEventListener
-
要启用红外红外灯使用代码:
public void enableHeartRate(){ SensorManager mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE)); Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); mSensorManager.registerListener(this,mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL); } @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) { String msg = "" + (int)event.values[0]; Log.d(TAG, msg); }else{ Log.d(TAG, "Unknown sensor type"); } } @Override public void onAccuracyChanged(Sensor sensor, int i) { }
-
检查日志结果;)