アプリからビデオをキャプチャするための Android デベロッパー ガイドのコード サンプルに従っています。インスタンスでprepare
メソッドを呼び出すまで、物事は非常にスムーズです。次のメッセージをMediaRecorder
スローします。IOException
java.io.FileNotFoundException: /file:/storage/emulated/0/Pictures/MyApp/MyVideoFile.mp4:
open failed: ENOENT (No such file or directory)
コードはサイトのものとほとんど同じです。要約すると、次のとおりです。
CameraActivity
Camera および MediaRecorder リソースを管理するためのクラス。FileManager
ビデオ プレビュー フレームの格納に使用される出力ファイル パスの Uri を返すクラス。
コードスニペット:
public static File getOutputMediaFile(int type) throws Exception {
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
throw new Exception("Unable to access device SDCard.");
}
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MyApp");
if(! mediaStorageDir.exists()) {
if(! mediaStorageDir.mkdirs()) {
Log.d(CameraActivity.MYAPP, "Failed to create directory.");
}
}
// Create a media file name.
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE){
mediaFile = new File(mediaStorageDir.getPath(),
"MyAudioFile.jpg");
} else if(type == MEDIA_TYPE_VIDEO) {
mediaFile = new File(mediaStorageDir.getPath(),
"MyVideoFile.mp4");
} else {
return null;
}
return mediaFile;
}
mediaFile
メソッドに引数として渡されます_mediaRecorder.setOutputFile()
。ただし、 を呼び出す_mediaRecorder.prepare()
と、 がスローされIOException
ます。
私はすでに<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
AndroidManifest ファイルに含めています。
驚くべき点は、呼び出しを省略しmediaRecorder.prepare
てSDカードにファイルが存在するかどうかを確認すると、そこにあるということです!! ただし、上記のコードを最後まで実行してフォルダーを確認すると、ファイルはありません。ファイルが_mediaRecorder.prepare
呼び出しによって削除されているようです!!
私は Android 開発にかなり慣れていないので、これを理解しようとしてすでに 1 日以上費やしています。どんな助けでも大歓迎です!!