我想通过手机的传感器来使用 STEP_COUNTER。 这是我的代码:
public class ContarPassos extends Fragment {
private SensorManager sensorManager;
private TextView count;
boolean running;
Toolbar toolbar;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.contar_passos,null);
toolbar = view.findViewById(R.id.toolbar_passos);
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
count = (TextView) view.findViewById(R.id.passos);
sensorManager = (SensorManager)getActivity().getSystemService(Context.SENSOR_SERVICE);
return view;
}
@Override
public void onResume() {
super.onResume();
running = true;
Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if(countSensor != null) {
sensorManager.registerListener(getActivity(), countSensor, SensorManager.SENSOR_DELAY_UI);
} else {
Toast.makeText(getActivity(), "Count sensor not available!", Toast.LENGTH_LONG).show();
}
}
@Override
public void onPause() {
super.onPause();
running = false;
}
public void onSensorChanged(SensorEvent event) {
if(running) {
count.setText(String.valueOf(event.values[0]));
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
我的问题在这一行:
sensorManager.registerListener(getActivity(), countSensor, SensorManager.SENSOR_DELAY_UI);
我正在使用 fragment ,我认为当我们使用 fragment 时,我们使用 getActivity 而不是“this” 我已经尝试转换“getActivity”但不起作用。
最佳答案
我认为你需要在类声明中实现 SensorEventListener
public class ContarPassos extends Fragment implements SensorEventListener {
...
}
然后在注册回调时将第一个参数设置为“this”而不是 getActivity()
(sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI);
尝试一下,这是我在 StackOverflow 上的第一篇文章,我是一名菜鸟程序员,但希望我能提供帮助!
关于java - 无法使用registerlistener来使用Step_counter - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56961727/