Obtenga la frecuencia cardíaca del “Sensor” Samsung Gear Live

¿Cómo obtengo el ritmo cardíaco del sensor conectado en el Samsung Gear Live?

Acabo de tratar de enumerar todos los sensores por

SensorManager mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); List deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); for(Sensor s : deviceSensors){ Log.i(TAG, "" + s.getName()); } 

Pero solo obtengo estos sensores:

 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 

¿Cómo miden la frecuencia cardíaca? ¿Algunas partes de las aplicaciones Android W están disponibles para que pueda verlas?

Gracias y saludos

Aquí hay una esencia que muestra cómo leer el sensor de frecuencia cardíaca.

La carne de esto es:

 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); 

También necesitará la siguiente entrada en AndroidManifest.xml

  

Un pequeño ejemplo: (información completa aquí: 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) { } } 

Agregue en su Manifiesto

   

Hay una publicación en el blog que discute esto junto con el código fuente: http://marctan.com/blog/2014/07/08/reading-heart-heart-rate-data-from-samsung-gear-live/

Puntos clave a tener en cuenta en la publicación del blog:

  • El artículo usaba un valor diferente a Sensor.TYPE_HEART_RATE, que solo proporcionaba un nivel de precisión de 1.
  • También necesitará la siguiente entrada en AndroidManifest.xml