gpt4 book ai didi

java - android studio 传感器心率应用程序

转载 作者:行者123 更新时间:2023-12-02 03:14:48 35 4
gpt4 key购买 nike

我创建了一个简单的应用程序来学习如何通过一个按钮使用传感器心跳,并且标签是我的代码:

public class MainActivity extends AppCompatActivity implements SensorEventListener {
Button show;
TextView showHeartRate;
SensorManager sensorMgr;
Sensor heartRate;
String heartRateValue;



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show = (Button) findViewById(R.id.button);
show.setOnClickListener(displayHeartRate);
showHeartRate = (TextView) findViewById(R.id.showHeartRate);
sensorMgr = (SensorManager)this.getSystemService(SENSOR_SERVICE);
heartRate = sensorMgr.getDefaultSensor(Sensor.TYPE_HEART_RATE);

}
View.OnClickListener displayHeartRate = new View.OnClickListener() {
@Override
public void onClick(View view) {
showHeartRate.setText(heartRateValue);

}
};

@Override
protected void onResume() {
super.onResume();
sensorMgr.registerListener(this,heartRate,SensorManager.SENSOR_DELAY_NORMAL);

}

@Override
protected void onPause() {
super.onPause();
sensorMgr.unregisterListener(this);
}

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
heartRateValue = Integer.toString(sensorEvent.sensor.getType());

}

@Override
public void onAccuracyChanged(Sensor sensor, int i) {


}

我添加到 list :

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

问题是 onSensorChanged() 没有被调用。我在这里检查了很多解决方案,但我没有找到任何东西

最佳答案

首先,如果您尝试使用心率传感器,为什么您会期望它询问使用您相机的权限?

其次,我认为当您点击“显示心率”时,您还没有从传感器获得任何数据(heartRateValue 为空),而当数据最终出现时,您不会收到任何数据。并没有真正更新 UI,你只更新你的状态。我的建议是在每次传感器发生变化时更新您的 UI 状态,例如:

    @Override
public void onSensorChanged(SensorEvent sensorEvent) {
heartRateValue = Integer.toString(sensorEvent.sensor.getType());
showHeartRate.setText(heartRateValue);
}

或者您可以避免代码重复(即使它只有一行),创建一个 setter 并从点击处理程序和传感器处理程序调用它:

private void setHeartrate(String rate) {
showHeartRate.setText(rate);
}

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
heartRateValue = Integer.toString(sensorEvent.sensor.getType());
setHeartrate(heartRateValue);
}

View.OnClickListener displayHeartRate = new View.OnClickListener() {
@Override
public void onClick(View view) {
setHeartrate(heartRateValue);
}
};
<小时/>

第三,您没有使用来自传感器的数据,请查看 SensorEvent ,数据来自 values 数组,而您只是尝试显示传感器类型,为什么?试试这个:

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
heartRateValue = Integer.toString(sensorEvent.values.length > 0 ? sensorEvent.values[0] : 0.0f);
showHeartRate.setText(heartRateValue);
}

关于java - android studio 传感器心率应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472169/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com