Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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
Java 如何使步进计数器在后台工作?_Java_Android - Fatal编程技术网

Java 如何使步进计数器在后台工作?

Java 如何使步进计数器在后台工作?,java,android,Java,Android,我有一个应用程序,应该是通过我的智能手机计算足迹,它工作得很好。但是,我希望它能够在我不在后台使用的情况下计算步数 这是我的代码,它是用波兰语写的,为此我很抱歉。这里有一些翻译 mLiczKrok is Footsteps count textKroki is a text View which means TextFootsteps 为了继续计数,我应该在暂停方法中添加什么? protected void onCreate(Bundle savedInstanceState) {

我有一个应用程序,应该是通过我的智能手机计算足迹,它工作得很好。但是,我希望它能够在我不在后台使用的情况下计算步数

这是我的代码,它是用波兰语写的,为此我很抱歉。这里有一些翻译

mLiczKrok is Footsteps count
textKroki is a text View which means TextFootsteps
为了继续计数,我应该在暂停方法中添加什么?

  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if(ContextCompat.checkSelfPermission(this,
            Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_DENIED){
        //ask for permission
        requestPermissions(new String[]{Manifest.permission.ACTIVITY_RECOGNITION}, PHYISCAL_ACTIVITY);
    }
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    textKroki= findViewById(R.id.textKroki);
    sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);

    if(sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)!=null){

        mLiczKrok = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
        x= true;
    }
    else {

        textKroki.setText("Brak sensora."); x=false;
    }
}



 @Override
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor==mLiczKrok){
LiczKroki= (int) sensorEvent.values[0];
textKroki.setText(String.valueOf(LiczKroki));}}
 @Override
public void onAccuracyChanged(Sensor sensor, int i) {

}

@Override
protected void onResume() {
    super.onResume();
    if(sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)!=null){

      sensorManager.registerListener(this,mLiczKrok,SensorManager.SENSOR_DELAY_NORMAL);
    }
}
@Override
protected void onPause() {
    super.onPause();
    if(sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)!=null){
      sensorManager.unregisterListener(this,mLiczKrok);

    }
}

似乎暂停方法上有未注册类型的步进计数器传感器。这将永远不会收到步数计数,请删除onpause方法中的以下行。然后重新运行并测试你的应用程序

    if(sensorManager.getDefaultSensor( 
                  Sensor.TYPE_STEP_COUNTER) != null){
        sensorManager.unregisterListener(this, mLiczKrok);
     }
在活动的ondestroy()中添加以上行


注意:如果此上下文不适合您,请告知。在您的项目中,在onpause方法中注销脚踏计数器传感器有什么原因吗?

似乎onpause方法具有注销类型的脚踏计数器传感器。这将永远不会收到步数计数,请删除onpause方法中的以下行。然后重新运行并测试你的应用程序

    if(sensorManager.getDefaultSensor( 
                  Sensor.TYPE_STEP_COUNTER) != null){
        sensorManager.unregisterListener(this, mLiczKrok);
     }
在活动的ondestroy()中添加以上行


注意:如果此上下文不适合您,请告知。在您的项目中,在onpause方法中注销脚步计数器传感器有什么原因吗?

考虑使用服务考虑使用服务它正在工作,尽管我不知道当其他应用程序开始工作时(例如,有人打电话给我)它是否工作。应用程序不应该停止计数吗?它正在工作,尽管我不知道当其他应用程序开始工作时,它是否会工作,例如,有人打电话给我。应用程序不应该停止计数吗?