Android Wear Wellness传感器Moto360

问题描述:

据我所知,moto360没有类型的传感器:TYPE_HEART_RATE,它被称为被动式健康传感器。Android Wear Wellness传感器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传感器:健康被动传感器

主要活动:0

+0

添加权限。这是一个心率传感器。 –

如您所知,值TYPE_HEART_RATE不等于Wellness Passive Sensor,但是当我设置如下:

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

我发现,我得到心脏的跳动值。顺便说一下,不要忘记添加权限。

+0

我使用了MOTO 360 – alvin

我记得在尝试读取心率数据时,在Moto 360(第一代)上有特别的问题。由于没有传感器列表中报告的心率监测器,因此您使用被动健康传感器做正确的事情。

看一看在Github上回购这里寻找灵感(这就是我所做的推测出来):https://github.com/pocmo/SensorDashboard

值得一提的是,即使你得到它的工作,这是令人难以置信的片状。它甚至可以通过内置的应用程序进行游戏 - 与Google Fit和Moto Body一起玩游戏以获取心率,您会明白我的意思。