我有三段代碼:一段設置文件的原始文件路徑,一段用於重命名文件,另一段用於匹配文件,以便文件(音頻錄製)可以玩。製作Android文件路徑統一
我的問題是,據我所知,&我已經能夠在網上找到,我需要「file://」之前的其餘文件路徑,當我重命名...否則當我嘗試播放時,MediaPlayer會拋出異常。在經過大量搜索之後,我還沒有想出一個讓它們統一的好方法,以便「匹配器」代碼可以處理所有文件。我最好的猜測是,如果我可以找到一種方法,在文件路徑的其餘部分之前不必使用「file://」,這將是理想的。
public void setFileNameAndPath(){
int count = 0;
File f;
do{
count++;
mFileName = getString(R.string.default_file_name)
+ " #" + (mDatabase.getCount() + count) + ".mp4";
mFilePath = Environment.getExternalStorageDirectory().getAbsolutePath();
mFilePath += "/SoundRecorder/" + mFileName;
f = new File(mFilePath);
}while (f.exists() && !f.isDirectory());
}
2)重命名文件路徑:
public void rename(int position, String name) {
//rename a file
String mFilePath = "file://" + Environment.getExternalStorageDirectory().getAbsolutePath();
mFilePath += "/SoundRecorder/" + name;
File f = new File(mFilePath);
if (f.exists() && !f.isDirectory()) {
//file name is not unique, cannot rename file.
Toast.makeText(mContext,
String.format(mContext.getString(R.string.toast_file_exists), name),
Toast.LENGTH_SHORT).show();
} else {
//file name is unique, rename file
File oldFilePath = new File(getItem(position).getFilePath());
oldFilePath.renameTo(f);
mDatabase.renameItem(getItem(position), name);
notifyItemChanged(position);
}
}
3)配套文件:
Intent iin = getIntent();
Bundle b = iin.getExtras();
newString = (String) b.get("filename");
mFilePath = Environment.getExternalStorageDirectory().getAbsolutePath();
mFilePath += "/SoundRecorder/" + newString;
什麼是你有一個實際的問題'文件://'?即使你需要知道最好的知識,你有沒有嘗試過? 'file://'很少需要,因爲所有以'/開頭的文件都是普通文件,大多數代碼都知道。 – zapl
我必須使用file://來允許播放每個錄音。我嘗試了沒有它..它不玩,但有暫停按鈕,然後當我推暫停它是在錄音結束,然後當我按下播放,應用程序崩潰(通常它只是再次播放)。我發現解決方案在一個stackoverflow答案,我無法再找到。 問題是,一組記錄以「file://」開頭,另一組不記錄,我將名稱的末尾作爲putExtra發送,而我只能有一個文件路徑字符串。 –
如果路徑以'/'開頭,那麼添加'file://'怎麼辦?'然後你的一切都是一樣的 – zapl