【问题标题】:Simple stepCounter doesn't work on different phones简单的 stepCounter 不适用于不同的手机
【发布时间】:2020-09-16 10:34:16
【问题描述】:

我基于计步传感器制作了简单的 stepCounter。我知道不是每个手机都有这种传感器,所以我通过 onResume 中的 Toast 消息保护了我的代码。两个设备都显示 Toast 消息表明传感器已找到。应用程序在三星 Galaxy S5 上正常工作,但在更高型号的 S10E 上却不能。有谁知道这个错误的原因是什么?

public class StepCounterActivity extends AppCompatActivity implements SensorEventListener {

private TextView textViewStepCounter;
private SensorManager mSensorManager;
private boolean running = false;
int stepCount = 0;



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

    textViewStepCounter = (TextView) findViewById(R.id.textViewStepCounter);

    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);



}

@Override
protected void onResume() {
    super.onResume();
    running = true;
    Sensor countSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
    if(countSensor != null){
        mSensorManager.registerListener(this,countSensor,SensorManager.SENSOR_DELAY_UI);
        Toast.makeText(this, "Sensor found", Toast.LENGTH_SHORT).show();
    }else {
        Toast.makeText(this,"Sensor not found",Toast.LENGTH_SHORT).show();
    }
}

@Override
protected void onPause() {
    super.onPause();
    running = false;
}

@Override
public void onSensorChanged(SensorEvent event) {
    if(running){
        stepCount = (int) event.values[0];
        textViewStepCounter.setText(String.valueOf(stepCount));
    }

}

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

}

}

【问题讨论】:

    标签: android android-sensors samsung-galaxy sensormanager


    【解决方案1】:

    在 Android 10 上,您需要请求权限才能访问步数传感器。

    在你的清单中使用它。

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

    您可能想询问权限:

    if(ContextCompat.checkSelfPermission(this,
            Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_DENIED){
        //ask for permission
        requestPermissions(new String[]{Manifest.permission.ACTIVITY_RECOGNITION}, PHYISCAL_ACTIVITY);
    }
    

    看到这个问题:Android 10 cannot register Sensor.TYPE_STEP_COUNTER

    【讨论】:

    • 谢谢,解决方案是在 Android 10 的 onCreate 方法中添加代码无法注册 Sensor.TYPE_STEP_COUNTER 答案
    【解决方案2】:

    不幸的是,由于安装空间有限,Galaxy S10e 不是嵌入式心率传感器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多