Мне нужно только записать видео на устройство Android с некоторыми характеристиками. Тем не менее, я действительно разочарован, потому что все, что я пытаюсь решить какую-то странную проблему системы, появилось, и я go вернулся к началу. Поэтому мне нужен более опытный разработчик, который бы помог мне.
Технические характеристики
Мне нужно следующее:
- Базовый c видеоинтерфейс (пользователь видит, что записано).
- Время видео не может превышать 20 с (Макс .: 20 с после того, как запись останавливается).
- Включен только ландшафтный режим. Заблокируйте пользователя, чтобы он не мог записывать в портретном режиме.
- Кнопка конфигурации должна быть включена. Кнопка настройки, позволяющая пользователю изменять разрешение видео
- Должна быть включена кнопка передней и задней камеры.
- Насколько это возможно, устройства должны быть совместимы с моим приложением.
Что я уже пробовал
Приведенный ниже код был моей первой попыткой . Я был счастлив, потому что это работает, но он не может заблокировать видео портретной записи. Итак, я прочитал из какого-то другого вопроса здесь, что я должен использовать для этого API camera2 android.
Uri videoUri = FileProvider.getUriForFile(this, "com.my.myapplication.fileprovider", videofile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, VIDEO_DURATION);
intent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); // this won't work
intent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_LOCKED); // neither this
startActivityForResult(intent, REQUEST_VIDEO_CAPTURE);
Итак, я получил вторую попытку . Я изменил свой код на API-интерфейс camera2, чтобы знать, что большинство устройств Samsung его не поддерживают. Вот мой источник этой информации . Конечно, я только что обнаружил, что после того, как в моем коде появились странные ошибки.
Я следовал этому коду: код androidwave
И этот код: lytcom / Camera2Kit
И этот код: googlearchive / android -Camera2Video
Которые практически одинаковы.
Поскольку устройства не ' Они не совместимы с API-интерфейсом Camera2, они не будут возвращать видео в хорошем качестве. Я знаю, что на моем устройстве установлена камера с разрешением 1920x1080, но метод возврата системы
E/Camera2VideoFragment: Width: 1440 Height 1080
E/Camera2VideoFragment: Width: 1088 Height 1088
E/Camera2VideoFragment: Width: 1472 Height 720
E/Camera2VideoFragment: Width: 1280 Height 720
E/Camera2VideoFragment: Width: 1056 Height 864
E/Camera2VideoFragment: Width: 960 Height 720
Моя третья попытка . Я использовал библиотеку JeroenMols / LandscapeVideoCamera , которая дает мне именно то, что мне нужно, включая эту красивую картинку, на которой пользователь поворачивает устройство перед записью. Однако эта библиотека не будет работать для API> 22, source .
В настоящее время
NOW , я не знаю не знаю что делать Что бы я ни пытался, ничего не получалось. И большинство ответов вокруг только что использовали эти библиотеки. Так может кто-нибудь помочь мне? Пожалуйста Java язык. Я не могу справиться Kotlin.