Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android可穿戴设备中访问心率传感器?_Android_Wear Os_Moto 360 - Fatal编程技术网

如何在Android可穿戴设备中访问心率传感器?

如何在Android可穿戴设备中访问心率传感器?,android,wear-os,moto-360,Android,Wear Os,Moto 360,我在访问Moto 360上的心率传感器时遇到问题 我试过以下几件事: Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL); 然后实现SensorEventListener接口: @Override pu

我在访问Moto 360上的心率传感器时遇到问题

我试过以下几件事:

Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
然后实现SensorEventListener接口:

@Override
public void onSensorChanged(SensorEvent event) {

        String TAG = "tag";
        Log.i(TAG, "--------------------------");
        Log.i(TAG, msg);
        Log.i(TAG, ""+ event.sensor.getType());
        Log.i("live","--------------");
奇怪的是,我根本没有收到任何信息(不仅仅是心率)

此外,我尝试列出所有传感器,但列表中没有显示心率传感器

当然,我已经添加了任务

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.watchtest" >

<uses-feature android:name="android.hardware.type.watch" />
<uses-permission android:name="android.permission.BODY_SENSORS" />

有什么想法吗

谢谢


w、

正如@Kent和@Murphy所建议的,更新的SDK是解决方案。在我的例子中,我需要放弃这个项目,从头开始创建新的,因为即使更新了SDK,旧的也不起作用

我在Moto 360上遇到了类似的问题。传感器始终返回0.0f的值

然后我等了两分钟,突然发现我的价值观变了=0进来了。似乎这个传感器在显示任何东西之前需要“预热”。如果你考虑到它以“每分钟的拍数”为单位测量每秒大约发生一次的事情,这并不令人惊讶。在一两分钟过去之前,它是不可靠的。而且每个应用程序都有自己的测量:如果另一个心跳应用程序也在运行(比如Moto Body)

这也意味着您必须创建一个服务来监听传感器(以及一个活页夹来将传感器的值传递给您的活动或手机)

看看我在github上共享的演示项目:

在我完成以下工作后,开始为我工作:

  • 使用从手表卸载我的应用程序

    adb -s localhost:4444 uninstall com.example.android.wearable.jumpingjack
    
  • 添加了获取心率传感器的权限

    <uses-permission android:name="android.permission.BODY_SENSORS"/>
    
  • 再次启动应用程序。我用sensor.TYPE_heart_rate接收心率传感器,并开始接收其读数。尽管他们还远远不够好。有很多读数,但它们完全相同,仅限于以下5个值:

    heartRate onSensorChanged values = [0.0], accuracy = 0, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0}
    heartRate onSensorChanged values = [53.0], accuracy = 2, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0}
    heartRate onSensorChanged values = [54.0], accuracy = 2, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0}
    heartRate onSensorChanged values = [55.0], accuracy = 2, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0}
    heartRate onSensorChanged values = [77.0], accuracy = 1, sensor = {Sensor name="Heart Rate Sensor", vendor="Motorola", version=1, type=21, maxRange=65535.0, resolution=1.0, power=0.45, minDelay=0}
    

    大多数时候,我得到的是相同的53.0值,这似乎不是我的真实心率。77可能就是其中之一。

    因此,我来到这里,遇到了同样的问题,简单的解决方案是使用adb从手表中删除应用程序:

    adb -s localhost:4444 uninstall com.*packagename*
    
    然后简单地使用android studio、eclipse或您最初使用的任何工具重新安装它


    感谢Alexander K提供此解决方案

    您是否尝试过更新SDK?我同意Kent的观点,请确保您的SDK是最新的,有人修复了类似的问题:@Kent project是否与SDK有某种关联?因为我有最新的SDK,它不工作。但当我创建新项目时,它开始工作了。我也有同样的问题。我在很短的一段时间内得到了som值,然后它返回相同的值大约一分钟,然后给我一些不同的值,然后它再次停止。这似乎是Moto 360的一个普遍问题。你能接受这个答案吗?这样每个人都知道它已经解决了。我相信诀窍是从手表上卸载应用程序。下面是一个示例命令:adb-s localhost:4444 uninstall com.example.android.wearable.jumpingjackI还有:android:minSdkVersion=“20”android:targetSdkVersion=“20”,watch的SDK版本是4.4W.2,在我的SDK管理器中,SDK平台的版本是rev.2。3对于样品,修订版。4用于磨损图像和版本。有了这些变化,我现在有了心率传感器,可以从中读取数据。
    adb -s localhost:4444 uninstall com.*packagename*