Получите ЧСС от "Датчика" Samsung Gear Live
Как получить пульс от подключенного датчика на Samsung Gear Live
Я просто попытался перечислить все датчики по
SensorManager mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
List<Sensor> deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
for(Sensor s : deviceSensors){
Log.i(TAG, "" + s.getName());
}
Но я получаю только тезисы:
07-09 23:18:05.047 3269-3269/com.sample.soma.wapp I/MyActivity﹕ MPU6515 Acceleration Sensor
07-09 23:18:05.047 3269-3269/com.sample.soma.wapp I/MyActivity﹕ MPU6515 Gyroscope Sensor
07-09 23:18:05.057 3269-3269/com.sample.soma.wapp I/MyActivity﹕ AK8963C Magnetic field Sensor
07-09 23:18:05.057 3269-3269/com.sample.soma.wapp I/MyActivity﹕ AK8963C Magnetic Sensor UnCalibrated
07-09 23:18:05.057 3269-3269/com.sample.soma.wapp I/MyActivity﹕ SAMSUNG Step Detector Sensor
07-09 23:18:05.057 3269-3269/com.sample.soma.wapp I/MyActivity﹕ SAMSUNG Step Counter Sensor
07-09 23:18:05.057 3269-3269/com.sample.soma.wapp I/MyActivity﹕ SAMSUNG Significant Motion Sensor
07-09 23:18:05.057 3269-3269/com.sample.soma.wapp I/MyActivity﹕ SAMSUNG Game Rotation Vector
07-09 23:18:05.057 3269-3269/com.sample.soma.wapp I/MyActivity﹕ SAMSUNG Tilt Wake Sensor
07-09 23:18:05.057 3269-3269/com.sample.soma.wapp I/MyActivity﹕ MPL Rotation Vector
07-09 23:18:05.057 3269-3269/com.sample.soma.wapp I/MyActivity﹕ MPL Orientation
07-09 23:18:05.067 3269-3269/com.sample.soma.wapp I/MyActivity﹕ MPL Gravity
07-09 23:18:05.067 3269-3269/com.sample.soma.wapp I/MyActivity﹕ MPL Linear Accelration
Как они измеряют частоту сердечных сокращений? Открыты ли некоторые части Android W Apps, чтобы я мог на них взглянуть?
Спасибо и привет.
3 ответа
Вот суть, которая показывает, как читать датчик сердечного ритма.
Мясо этого:
SensorManager mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE));
Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
Sensor mStepCountSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
Sensor mStepDetectSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.registerListener(this, mStepCountSensor, SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.registerListener(this, mStepDetectSensor, SensorManager.SENSOR_DELAY_NORMAL);
Вам также понадобится следующая запись в AndroidManifest.xml
<uses-permission android:name="android.permission.BODY_SENSORS" />
Небольшой пример: (полное описание здесь: https://gist.github.com/gabrielemariotti/d23bfe583e900a4f9276)
public class MyActivity extends Activity implements SensorEventListener {
//Sensor and SensorManager
Sensor mHeartRateSensor;
SensorManager mSensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.heart_layout);
//Sensor and sensor manager
mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE));
mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
//....
}
@Override
protected void onResume() {
super.onResume();
//Register the listener
if (mSensorManager != null){
mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
}
@Override
protected void onPause() {
super.onPause();
//Unregister the listener
if (mSensorManager!=null)
mSensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
//Update your data.
if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) {
//heart rate = (int) event.values[0];
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
Добавьте в свой манифест
<uses-permission android:name="android.permission.BODY_SENSORS" />
В блоге обсуждается это вместе с исходным кодом: http://marctan.com/blog/2014/07/08/reading-heart-rate-data-from-samsung-gear-live/
Ключевые моменты, чтобы отметить из сообщения в блоге:
- В статье использовалось другое значение, отличное от Sensor.TYPE_HEART_RATE, которое давало уровень точности только 1.
Вам также понадобится следующая запись в
AndroidManifest.xml
<uses-permission android:name="android.permission.BODY_SENSORS" />