在Samsung的编程指南(第77-81页)中,有一个关于如何使用s Health Service SDK设置和获取心率信息的参考。然而,我想直接访问Galaxy S5的心率传感器,就像访问加速度计、陀螺仪、光传感器和其他传感器一样。我找到了这个例子的三星齿轮直播,但我找不到任何例子的银河S5。
是否可以直接访问Galaxy S5的心率传感器?有人有关于如何做到这一点的代码示例吗?
谢谢。
您无法从三星Galaxy S5获取原始心率监测器数据。
传感器扩展SDK需要从谷歌安卓不支持的传感器获取原始数据,该页面声明:
传感器扩展SDK有以下限制:
- HRM传感器IR/RED信号
- 要求使用Android 5.0(Lollipop API 21级)或更高版本的设备
- Galaxy S5和Galaxy S5mini被排除在外
- 仅支持带有HRM传感器的三星设备
使用SensorManager.getDefaultSensor(65562)
直接访问HRM传感器。
访问并启用红外线:
-
在清单中使用
使用权限android:name="android.permission.BODY_SENSORS"/>
-
在活动中实现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) { }
-
检查日志中的结果;)
三星发布了一个名为SensorExtension的SDK。你必须申请,他们会给你发一封带有zip文件的电子邮件。
http://developer.samsung.com/galaxy#sensor-扩展
SensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE)
工作良好。
但是
此传感器需要权限android.permission.BODY_SENSORS.ItSensorManager.getSensorsList也不会返回SensorManager.getDefaultSensor(如果应用程序没有)准许
(来自文档)
因此,如果读者尝试getDefaultSensor但没有成功,这很可能是错误。