Попытка установитьOnKeyListener на camaraX - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь заставить приложение делать снимок при нажатии кнопок громкости, как в снэпчате и т.п. Это приложение использует библиотеку CamaraX для функций камеры. Теперь, насколько я могу судить, CameraXView должен позволить мне установить onKeyListener, поскольку он расширяет frameLayout -> ViewGroup -> View. Однако все, что я пробовал до сих пор, не улавливает KeyEvents.

public class CameraXFragment extends LoggingFragment implements CameraFragment {
  ...
  private CameraXView          camera;
  ...
  private void initControls() {
    ...
    // This doesn't work
    camera.setOnKeyListener((v, keyCode, event) -> {
      Log.e(TAG, "KeyEvent please: " + keyCode);
      return false;
    });
    ...
    // This does work
    camera.setOnTouchListener((v, event) -> gestureDetector.onTouchEvent(event));
  }
}

CameraXView имеет onTouchEvent, поэтому я попытался добавить в него onKeyDown, но это не похоже

camera.setOnTouchEventLister не был добавлен мной, поэтому я не совсем понимаю, почему он работает, а мой - нет.

1 Ответ

0 голосов
/ 13 июля 2020

Вы можете зарегистрировать широковещательный приемник для получения обратного вызова при каждом нажатии кнопки громкости, а затем каждый раз запускать захват изображения. Вы можете посмотреть , как пример CameraX реализует это .

Радиовещательный приемник будет выглядеть следующим образом. Убедитесь, что вы зарегистрировали и отменили регистрацию соответствующим образом.

Захват изображения должно происходить только после настройки камеры.

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