当我的测试手机录制视频并且没有外置SD卡时,我遇到了问题。我得到录音错误,因为:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
指向外部SD卡,由于外部SD不存在,手机不够智能,无法指向内部存储。
这个问题有解决方法吗?
如果没有,我该如何直接录制到内部存储?
答案 0 :(得分:3)
如果您想测试SD卡是否存在,请阅读documentation on 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");
答案 1 :(得分:-1)
试试这个article。
您基本上想要致电openFileOutput(String fileName, MODE_PRIVATE)
。这将返回FileOutputStream
供您使用。调用write()
写入文件,然后调用close()
进行清理。请注意,MODE_PRIVATE
会使文件对您的应用程序保密。