Я пытаюсь записать видео на Android, используя намерение MediaStore.ACTION_VIDEO_CAPTURE. Я могу записать видео в альбом библиотеки по умолчанию, но не могу сохранить его где-либо еще. Я попытался использовать параметр намерения EXTRA_MEDIA_ALBUM:
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_MEDIA_ALBUM, "My app videos");
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, 0);
Я также пытался вставить строку видео в MediaStore перед самим видео.
ContentValues videoValues = new ContentValues();
videoValues.put(MediaStore.Video.Media.TITLE, "My app video at" + System.currentTimeMillis());
videoValues.put(MediaStore.Video.Media.ALBUM, "My app videos");
Uri videoUri= getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, videoValues);
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, 0);
И я также попытался изменить метаданные после вставки видео, чтобы увидеть, находится ли оно в другом альбоме, когда я открываю приложение галереи.
protected void onActivityResult(final int requestCode, final int resultCode, final Intent dataIntent) {
...
Uri contentUri = dataIntent.getData();
ContentValues values = new ContentValues();
values.put(MediaStore.Video.Media.ALBUM, "My app videos");
int result = getContentResolver().update(contentUri, values, null, null);
«результат» равен 1, поэтому значение строки фактически изменяется, но его нет в альбоме «Мои видео приложения», когда я его открываю.
Я также пробовал различные решения, описанные в документации Android. но с любым Uri IllegalArgumentException (неизвестный файл URL). Мне не хватает удобного метода, такого как MediaStore.Images.Media.insertImage
Как вы справились с этой проблемой?