当我的测试手机录制视频并且没有外部 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
将使文件对您的应用程序私有。