Всякий раз, когда физически нажимаются кнопки регулировки громкости ИЛИ контроллером селфи-джойстика Bluetooth, я предлагаю моему объекту OpenCv JavaCameraView сделать фотографию. Поскольку входящее событие ключа идентично, в каждом случае я обрабатываю его в одной области.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
if (!isReviewShown()) {
mCaptureButton.setEnabled(false);
mSwapCameraButton.setEnabled(false);
mCameraView.takePicture();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
Однако всякий раз, когда поступает сигнал от селфи-стика, я получаю много странных и неожиданных ошибок, которые я не могу отследить. Приложение аварийно завершает работу, потому что базовый объект камеры внезапно становится нулевым, экран просмотра иногда отображается без всякой причины, происходит сбой при сбое и т. Д. Я понятия не имею, почему это происходит, потому что физическое нажатие клавиш регулировки громкости прекрасно работает каждый раз и входящие ключевые события кажутся идентичными.
Мое устройство - Galaxy S7.