Видеозахват в Android 4.3 с использованием намерения приложения камеры

Как захватить видео, вызывая приложение камеры Android, используя намерение в 4.3. Я работал в 4.2 и ниже. Даже образец Google не работает . Это ошибка? Или Google изменил способ возврата записанного видео. Захват изображения все еще работает.

Я все еще получаю RESULT_OK, но данные намерения равны нулю для целей MediaStore.ACTION_VIDEO_CAPTURE.

Проблема

Да, есть ошибка, начиная с версии Android 4.3 .

Как говорится в документации :

Если EXTRA_OUTPUT отсутствует, видео будет записано в стандартное местоположение для видео, а Uri этого местоположения будет возвращено в поле данных Uri.

То, что я испытал, заключается в том, что возвращаемое значение поля данных равно Null вместо того, чтобы содержать Uri видеофайла.


Решение

На данный момент нужно передать MediaStore.EXTRA_OUTPUT в Intent определяющее местоположение вывода для видеофайла, если версия API устройства – 18. Это работает по назначению.

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

  1. Вставьте новую запись в MediaStore.Video.Media.EXTERNAL_CONTENT_URI :

     Uri videoUri = context.getContentResolver().insert(EXTERNAL_CONTENT_URI, value); 

    Являясь value ContentValues с отображаемым именем, типом файла и файловым контуром в новый видеофайл. Например:

     ContentValues value = new ContentValues(); value.put(MediaStore.Video.Media.TITLE, "VideoTitle"); value.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4"); value.put(MediaStore.Video.Media.DATA, videoFilePath); 
  2. Передайте возвращаемое значение, videoUri , как EXTRA_OUPUT в Intent .

Intereting Posts
Phonegap android camera: сбой при установке опции «correctOrientation» Gradle Android Project с модулем Java 8 Как узнать, что этот файл был создан из моего приложения? Используя данные поставщиков контекста или запрашивая разрешение на просмотр Google Фото? Многопользовательские прослушиватели Firebase Android / Eclipse эмулятор, как стереть данные? Лотские свойства и значения Kotlin сброшены: сбрасываемый ленивый делегат Android: поднять AlertDialog из фоновой темы Выяснение версии Android в AOSP на время компиляции собственного кода? Закройте окно документации IntelliJ (quick-doc), когда мышь отодвинется Android-7.0: EditText неправильный actionId в редакторе actionlistener Не удается вызвать void android.view.View.setTranslationZ (float) на нулевом объекте Исходный код Firefox для Android Вызов частного (неопубликованного) метода в Android API Должен ли телефон быть подключен к Интернету, чтобы поставщик сети мог определить местоположение?