Android - Переключение между передней и задней камерами во время записи видео

Я пытаюсь реализовать пользовательскую камеру для записи видео. Я следил за Этот пример и работает нормально.

Теперь я хочу добавить функциональность "Переключить камеру" по щелчку кнопки. Он должен иметь возможность переключаться между передней/задней камерой, даже когда видео записывается.

Поэтому, пожалуйста, помогите мне узнать, возможно ли это?

1. Если да, то как?

2. Если нет, то предложите некоторое обходное решение

Некоторые примеры кодов или ссылок будут очень полезны...

Примечание: Я искал информацию об этом и нашел несколько ответов StackOverFlow, например

Android Camera2 API переключится обратно на передние камеры

Android: переключение камеры при нажатии кнопки

Но ни один из них не предоставляет возможность переключать камеру, когда видео записывается.

Пожалуйста, помогите.

Код такой же, как Этот пример. И это Camera2 API.

Ответ 1

Насколько мне известно, эта камера является устройством и @Selvin объясняет, что передние и задние камеры - это разные устройства. Теперь позвольте мне начать сначала,

В некоторых устройствах есть собственные функции, которые вы можете переключить с камеры во время видеозаписи. Nexus 9. Подробнее см. этот вопрос.

Другой способ, который вы можете сделать, используя MediaRecorder. Вы можете реализовать такой ответ на этот вопрос. как переключаться между передней и задней камерами при использовании MediaRecorder android?

У меня больше нет идеи об этом, но если вы хотите это сделать, сделайте вот так: -

1. Когда вы записываете видео с помощью камеры заднего вида и переключаетесь на переднюю камеру, затем временно сохраняйте это видео в локальной и звезде с передней камерой.
2. Теперь остановите видеозапись, затем запустите этот файл и сохраните его как отдельный файл.

Ответ 2

camera = Camera.open(currentCameraId);
// Pass 0 And 1 currentCameraId
setCameraDisplayOrientation(CameraActivity.this, currentCameraId, camera);
try {

    camera.setPreviewDisplay(previewHolder);
} catch (IOException e) {
    e.printStackTrace();
}
camera.startPreview();
}