2015-10-04 4 views
4

Насколько я знаю, moto360 не имеет датчика типа: TYPE_HEART_RATE, это называется пассивный датчик хорошего самочувствия.Android Wear Wellness Sensor Moto360

Проблема заключается в том, что этот оздоровительный датчик не дает мне какие-либо данные, в отличие от любого другого датчика, который я пытался (как гравитация, акселерометр ...)

Я ждал большего чем 5 минут, но этот датчик дает мне данные только тогда, когда я запускаю приложение.

Я попытался sdk20, sdk21, sdk22, sdk23 ... до сих пор нет результата я также не имеют в android.permission.BODY_SENSORS в моем манифеста

Вопрос: Как получить работа датчика, что я могу сделать?

package com.x.firstapp; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.wearable.view.WatchViewStub; 
import android.util.Log; 
import android.widget.Toast; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.view.WindowManager; 


public class MainActivity extends Activity implements SensorEventListener { 
private SensorManager mSensorManager; 
private Sensor mHeartSensor; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); 
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { 
     @Override 
     public void onLayoutInflated(WatchViewStub stub) { 
     } 
    }); 

    // keep watch screen on 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    Toast.makeText(getApplicationContext(), "Hi Oleg", Toast.LENGTH_LONG).show(); 


    mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    mHeartSensor = mSensorManager.getDefaultSensor(65538); //wellness sensor 
    mSensorManager.registerListener(this, mHeartSensor, SensorManager.SENSOR_DELAY_NORMAL); 

} 


public void onSensorChanged(SensorEvent event) { 
    if (event.sensor.getType() == 65538) { 
     String msg = "" + (int) event.values[0]; 
     Log.d("Main Activity", msg); 
    } 
} 

@Override 
public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    Log.d("Main Activity", "accuracy : " + accuracy + " sensor : " + sensor.getName()); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    mSensorManager.unregisterListener(this); 
} 

}

только выход из этого "оздоровительного" датчика (только при запуске приложения):

D/Главная активность: Точность: 3 датчика: оздоровительный пассивный датчик

D/Основная деятельность: 0

+0

Добавление разрешений. Это датчик сердечного ритма. –

ответ

3

Как известно, значение TYPE_HEART_RATE не равен Wellness Passive Sensor, но когда я установил, как показано ниже:

Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); 

Я считаю, я получаю значение биений сердца. Кстати, не забудьте добавить разрешение.

+0

Я использовал MOTO 360 – alvin

0

Помню, у меня возникли проблемы с Moto 360 (первый ген), когда вы пытались читать данные о частоте сердечных сокращений. Вы делаете правильную вещь, используя пассивный датчик хорошего самочувствия, поскольку в списке датчиков нет монитора частоты сердечных сокращений.

Посмотрите репо Github здесь для вдохновения (это то, что я сделал, чтобы понять это): https://github.com/pocmo/SensorDashboard

Стоит отметить, что даже если вы получите это работает, это невероятно отслаиваться. Он даже взломанный через встроенные приложения - поиграйте с Google Fit и Moto Body, чтобы принять сердечный ритм, вы поймете, что я имею в виду.