テスト用の電話でビデオを録画し、外部SDカードがない場合に問題が発生しました。次の理由で録音エラーが発生します。
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
外部SDカードを指し、外部SDが存在しないため、電話は内部ストレージを指すほどスマートではありません。
この問題の解決策はありますか?
そうでない場合、内部ストレージに直接記録するにはどうすればよいですか?
SDカードが存在するかどうかをテストする場合は、Environment.getExternalStorageState()のドキュメントをお読みください。これには、SDカードがマウントされているか、読み取り可能か、書き込み可能かをテストする方法を示すコードが含まれています。アプリの実行中にカードが取り外された場合でも、BroadcastReceiverを登録します。
これにより、SDカードが使用できない場合はいつでも、保存したファイルを内部ストレージに転送できます。
コメントからの追加
SDカードの可用性を現在どのようにテストしているかについての詳細は提供されていないため、プロセスを一般化しました。
MediaRecorder mediaRecorder = new MediaRecorder();
...
String state = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state))
mediaRecorder.setOutputFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES) + "/video.mp4");
else
mediaRecorder.setOutputFile(getFilesDir().getAbsolutePath() + "/video.mp4");
この記事を試してください。
基本的に。を呼び出しますopenFileOutput(String fileName, MODE_PRIVATE)
。これにより、が返さFileOutputStream
れます。呼び出しwrite()
てファイルに書き込み、次に呼び出しclose()
てクリーンアップします。MODE_PRIVATE
これにより、ファイルがアプリケーションに対してプライベートになることに注意してください。