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方法中注销脚步计数器传感器有什么原因吗?考虑使用服务考虑使用服务它正在工作,尽管我不知道当其他应用程序开始工作时(例如,有人打电话给我)它是否工作。应用程序不应该停止计数吗?它正在工作,尽管我不知道当其他应用程序开始工作时,它是否会工作,例如,有人打电话给我。应用程序不应该停止计数吗?