First post, feeling a bit like calling on the gods in ancient times. Please be kind dear celestial programming entities, I don't want to sacrifice my cat :(
Problem: trying to implement a Step Counter in a Fragment that starts and stops depending on switch position, but I fail to understand which SensorEventListener-context I need to pass to the registerListener() method that I try to implement in the onCheckedChanged()-method. I tried this, getContext(), getApplication() but to no avail.
So, great oracles of stackoverflow, which are the right words to type?
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) {
}
}