Java Can';在我停止使用MediaRecorder录制后,找不到文件目录
我正在制作一个只要按住imagebutton就可以录制声音的应用程序,但在录制完之后,我在获取文件时遇到了一个问题 这是输出文件的代码:Java Can';在我停止使用MediaRecorder录制后,找不到文件目录,java,android,eclipse,android-mediarecorder,Java,Android,Eclipse,Android Mediarecorder,我正在制作一个只要按住imagebutton就可以录制声音的应用程序,但在录制完之后,我在获取文件时遇到了一个问题 这是输出文件的代码: if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { externalStoragePath = getExternalCacheDir().getAbsolutePath(); recorder.setOutput
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
externalStoragePath = getExternalCacheDir().getAbsolutePath();
recorder.setOutputFile(externalStoragePath + "/easyvoicenotepad/test.3gp");
}
else
{
storagePath = Environment.getDataDirectory().getAbsolutePath();
recorder.setOutputFile(storagePath + "/easyvoicenotepad/test.3gp");
}
我将其记录下来,结果如下:
07-31 01:49:54.582: I/storage(332): File saved to: /storage/emulated/0/Android/data/com.whizzappseasyvoicenotepad/cache/easyvoicenotepad/test.3gp
我在我的设备上找不到这个目录(我甚至没有使用emulator),顺便说一下,我的设备是三星Galaxy Nexus,如果有帮助的话
此外,如果问题可能出在其他地方,以下是完整的mainactivity代码:
public class MainActivity extends Activity {
MediaRecorder recorder;
String storagePath;
String externalStoragePath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//AUDIO RECORDER
recorder = new MediaRecorder();
recorder.reset();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
externalStoragePath = getExternalCacheDir().getAbsolutePath();
recorder.setOutputFile(externalStoragePath + "/easyvoicenotepad/test.3gp");
}
else
{
storagePath = Environment.getDataDirectory().getAbsolutePath();
recorder.setOutputFile(storagePath + "/easyvoicenotepad/test.3gp");
}
//IMAGE BUTTON ONTOUCHLISTENER
final ImageButton recBtn = (ImageButton) findViewById(R.id.recButton);
recBtn.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
recBtn.setImageResource(R.drawable.record_btn_pressed);
try {
recorder.prepare();
recorder.start();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
recBtn.setImageResource(R.drawable.record_btn);
try {
recorder.prepare();
recorder.stop();
recorder.reset();
recorder.release();
recorder = null;
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i(STORAGE_SERVICE, "File saved to: " + externalStoragePath + "/easyvoicenotepad/test.3gp");
}
return true;
}
});
} //END OF ONCREATE
用于临时文件
根据API:
外部文件并不总是可用的:如果用户在计算机上装入或删除外部存储器,它们将消失。
存储在中的文件也是如此
所以你可能想要或者。如果你的应用程序被卸载,后者将允许你的文件保存,而前者则不会