【问题标题】:Heart rate monitor doesn't give feedback心率监测器不提供反馈
【发布时间】:2017-08-08 17:27:53
【问题描述】:

我正在尝试显示佩戴智能手表 (LG Urbane) 的人的心率。然而,传感器从不提供任何反馈。我在 stackoverflow 上尝试了多种解决方案,但没有一个有所作为。我已经添加了在我的手机和可穿戴清单中使用身体传感器的许可请求,但我从未收到要求该许可的弹出窗口。卸载应用并重新安装也无济于事。

这是我的活动:

public class Monitor extends WearableActivity implements SensorEventListener{

    // /Users/Lieven/Library/Android/sdk/platform-tools/adb connect 192.168.1.15
    // /Users/Lieven/Library/Android/sdk/platform-tools/adb -s 192.168.1.15:5555 uninstall be.ehb.dt.finalwork_lievenluyckx_v001


    private final String LOG_TAG = "Monitor";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wear);
        setAmbientEnabled();


        Log.d(LOG_TAG, "onCreate");


        //JUISTE LETTERTYPE IN TEXTVIEWS ZETTEN
        Typeface custom_font = Typeface.createFromAsset(getAssets(),  "fonts/brusselineregular.ttf");

        TextView monitor_emotion_text = (TextView) findViewById(R.id.monitor_emotion_text);
        TextView monitor_bpm_counter = (TextView) findViewById(R.id.monitor_bpm_counter);
        TextView monitor_bpm_label = (TextView) findViewById(R.id.monitor_bpm_label);

        monitor_emotion_text.setTypeface(custom_font);
        monitor_bpm_counter.setTypeface(custom_font);
        monitor_bpm_label.setTypeface(custom_font);


       /*
       * SENSOR TUTORIAL
       * https://www.tutorialspoint.com/android/android_sensors.htm
       * DOOR tutorialspoint
       * */

        SensorManager sensorManager;
        sensorManager = (SensorManager)  this.getSystemService(SENSOR_SERVICE);

        Sensor heartRateSensor;
        heartRateSensor = sensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);

        sensorManager.registerListener(this, heartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
        Log.d(LOG_TAG, "Listener registered");

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        //Log.d(LOG_TAG, event.sensor.getType() + "");
        if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) {
            String msg = "" + (int)event.values[0];
            Log.d(LOG_TAG, msg);
        }
        else{
            Log.d(LOG_TAG, "Unknown sensor type");
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        Log.d(LOG_TAG, "Accuracy changed to " + accuracy + "");
    }


    @Override
    public void onEnterAmbient(Bundle ambientDetails) {
        super.onEnterAmbient(ambientDetails);
        updateDisplay();
    }

    @Override
    public void onUpdateAmbient() {
        super.onUpdateAmbient();
        updateDisplay();
    }

    @Override
    public void onExitAmbient() {
        updateDisplay();
        super.onExitAmbient();
    }

    private void updateDisplay() {
        if (isAmbient()) {
           /* CODE VOOR WANNEER HET SCHERM IN STANDBY VALT */
        } else {

        }
    }

}

这是我的可穿戴清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="be.ehb.dt.finalwork_lievenluyckx_v001">

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

    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <uses-permission android:name="android.permission.BODY_SENSORS"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/billie_coverdefault"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@android:style/Theme.DeviceDefault">
        <uses-library
            android:name="com.google.android.wearable"
            android:required="false" />

        <activity
            android:name=".Monitor"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.DeviceDefault.Light">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

这是我第一次为可穿戴设备创建应用程序,感觉很难获得任何有用的文档。

build.grade(磨损)

apply plugin: 'com.android.application'

android {
    allprojects {
        repositories {
            jcenter()
            maven {
                url "https://maven.google.com"
            }
        }
    }

    compileSdkVersion 25
    buildToolsVersion "25.0.1"
    defaultConfig {
        applicationId "be.ehb.dt.finalwork_lievenluyckx_v001"
        minSdkVersion 25
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile 'com.android.support:wear:26.0.0'
    compile 'com.google.android.support:wearable:2.0.3'
    provided 'com.google.android.wearable:wearable:2.0.3'
}

build.gradle(移动)

apply plugin: 'com.android.application'


android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig {
        applicationId "be.ehb.dt.finalwork_lievenluyckx_v001"
        minSdkVersion 23
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        jackOptions {
            enabled true
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.1', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    wearApp project(':wear')
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'com.android.support:appcompat-v7:24.1.1'
    compile 'com.mpatric:mp3agic:0.9.0'
    testCompile 'junit:junit:4.12'


}

【问题讨论】:

  • 您的最低和目标 API 级别是多少?
  • 将它们编辑到帖子中!
  • 您确定佩戴设备的人还活着吗?
  • 好吧,既然我正在输入这个,我很确定我是:(

标签: android wear-os sensors android-sensors


【解决方案1】:

来自Android guide for permissions

如果设备运行的是 Android 6.0(API 级别 23)或更高版本,并且应用的 targetSdkVersion 为 23 或更高版本,则应用会在运行时向用户请求权限。

您的目标 API 为 25,身体传感器被视为“危险权限”,因此您必须在运行时请求权限。查看this 以获取有关在运行时请求权限的指导。

【讨论】:

  • 哦,我一定读过“运行时”部分。我现在就去看看!
  • 他们让它显而易见。不久前我有一个类似的问题。让我知道它是否有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 2019-11-28
  • 1970-01-01
  • 2010-10-24
相关资源
最近更新 更多