我在Moto 360上访问心率传感器时遇到问题.
我试过以下事情:
Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
Run Code Online (Sandbox Code Playgroud)
然后实现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","--------------");
Run Code Online (Sandbox Code Playgroud)
而对我来说奇怪的是我根本没有得到任何信息(不仅是心率).
此外,我尝试列出所有传感器,但它没有在列表中显示心率传感器.
当然,我已经添加了持久性
<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" />
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?
谢谢.
W上.
我有一个 Android 应用程序,我想从任何连接的 Android 手表(Wear OS、Tizen 等)读取心率。如果不开发可穿戴应用程序,这可能吗?
我尝试在 上注册一个监听器,Sensor.TYPE_HEART_RATE但我没有看到我显示的 3 款手表中的任何一款(Ticwatch E、Ticband、Gear S2)。我确保我请求Manifest.permission.BODY_SENSORS许可。
sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager?
heartRateSensor = sensorManager?.getDefaultSensor(Sensor.TYPE_HEART_RATE)
val registered = sensorManager?.registerListener(this, heartRateSensor, SensorManager.SENSOR_DELAY_NORMAL)
Log.i(TAG, if (registered!!) "Registered Listener" else "Failed to register listener")
Run Code Online (Sandbox Code Playgroud) 我知道这可能是一个非常简单的问题,很多人都问过同样的问题,但我在获取心率方面仍然遇到问题。当然,我已经为解决方案做了很多研究。
一般来说,要使用心率传感器,我们需要获得权限并使用sensormanager,并且需要在mainActivity中为传感器注册监听器。
这里有人说对于SDK 23或更高版本,我们需要单独声明权限,但到目前为止我只开发了Android Wear的部分,没有关于手机的部分。
我还尝试重新安装并重新运行该应用程序。所有这些方法对我都不起作用。
这是我的代码,我想要的只是在手表上显示心率。
AWHeartRateSensor\wear\src\main\java\com\example\android\awheartratesensor\MainActivity.java
package com.example.android.awheartratesensor;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.wearable.view.WatchViewStub;
import android.util.Log;
import android.widget.TextView;
import static com.google.android.gms.wearable.DataMap.TAG;
public class MainActivity extends Activity {
private SensorManager mSensorManager;
private Sensor mHeartSensor;
private TextView mTextView;
WatchViewStub mStub;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mStub = (WatchViewStub) findViewById(R.id.watch_view_stub);
mStub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub stub) {
mTextView = (TextView) stub.findViewById(R.id.text);
mTextView.setText("I am …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 MainActivity.java 上的此代码访问我的 LG Watch Urbane 的心率传感器:
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
boolean sensorRegistered = mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
Log.d("Sensor Status:", " Sensor registered: " + (sensorRegistered ? "yes" : "no"));
Run Code Online (Sandbox Code Playgroud)
问题是我收到此错误:
E/SensorManager: sensor or listener is null
Run Code Online (Sandbox Code Playgroud)
发生该错误是因为没有关联 TYPE_HEART_RATE 的传感器。因此,我编写了一些代码,以便使用 .getSensorList(Sensor.TYPE_ALL) 方法获取传感器的完整列表,我得到了这个:
03-14 02:56:43.221 2936-2936/? I/Sensor list: MPU6515 Accelerometer: 1
03-14 02:56:43.221 2936-2936/? I/Sensor list: AK8963 Magnetometer: 2
03-14 02:56:43.221 2936-2936/? I/Sensor list: AK8963 Magnetometer Uncalibrated: 14
03-14 02:56:43.221 2936-2936/? I/Sensor list: MPU6515 Gyroscope: 4
03-14 02:56:43.221 2936-2936/? …Run Code Online (Sandbox Code Playgroud)