Невозможно использовать registerlistener для использования Step_counter - Android - PullRequest
1 голос
/ 10 июля 2019

Я хочу использовать 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);

Я использую фрагменты, и я думаю, что когда мы используем фрагменты, мы используем getActivity вместо «this» Iуже пытаюсь разыграть "getActivity", но не работает.

1 Ответ

0 голосов
/ 10 июля 2019

Я думаю, вам нужно реализовать SensorEventListener в объявлении класса

public class ContarPassos extends Fragment implements SensorEventListener {
...
}

тогда при регистрации обратного вызова первый аргумент будет иметь значение "this" вместо getActivity ()

(sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI);

дай мне шанс, это мой первый пост в StackOverflow, и я начинающий программист, но надеюсь, я смогу помочь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...