首页 > 解决方案 > 如何让片段中的传感器通过按钮单击来启动和停止?

问题描述

第一次发帖,感觉有点像在古代呼唤神灵。请善待亲爱的天体编程实体,我不想牺牲我的猫:(

问题:尝试在根据开关位置启动和停止的片段中实现计步器,但我不明白我需要将哪个 SensorEventListener-context 传递给我尝试在 onCheckedChanged() 中实现的 registerListener() 方法-方法。我试过这个,getContext(),getApplication()但无济于事。

那么,stackoverflow 的伟大预言,哪些是正确的输入词?

public class StepCounterFragment extends Fragment implements SensorEventListener {

    //declare layout elements
    private SwitchMaterial switchMaterial;
    private TextView setSteps;
    private Button reset;

    //declare sensor elements
    private Sensor sensorStepCounter;
    private SensorManager sensorManager;

    public StepCounterFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        //implement layout elements
        View rootView = inflater.inflate(R.layout.fragment_step_counter, container, false);
        switchMaterial = rootView.findViewById(R.id.switch_stepCounter);
        setSteps = rootView.findViewById(R.id.tv_stepcount);
        reset = rootView.findViewById(R.id.btn_resetSteps);

        //implement sensor elements
        sensorManager = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
        sensorStepCounter = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);

        switchMaterial.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    if (sensorStepCounter != null) {
                        sensorManager.registerListener(getContext(), sensorStepCounter, SensorManager.SENSOR_DELAY_NORMAL);
                    }

                } else {

                }
            }
        });

        return rootView;
    }

    @Override
    public void onSensorChanged(SensorEvent event) {

    }

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

    }
}

标签: javaandroidfragmentsensors

解决方案


推荐阅读