MediaStore.ACTION_VIDEO_CAPTUREインテントを使用してAndroidでビデオを録画しようとしています。デフォルトのライブラリアルバムにビデオを録画することはできますが、他の場所に保存することはできません。インテントパラメータ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);
'result'は1であるため、行の値は実際に変更されますが、開くと「Myappvideos」アルバムには表示されません。
また、 Androidのドキュメントで説明されているさまざまな解決策を試しましたが、UriにはIllegalArgumentException(不明なURLファイル)があります。MediaStore.Images.Media.insertImageのような便利なメソッドが恋しい
この問題にどのように対処しましたか?