2015-09-28 80 views
0

我有三段代碼:一段設置文件的原始文件路徑,一段用於重命名文件,另一段用於匹配文件,以便文件(音頻錄製)可以玩。製作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; 
+0

什麼是你有一個實際的問題'文件://'?即使你需要知道最好的知識,你有沒有嘗試過? 'file://'很少需要,因爲所有以'/開頭的文件都是普通文件,大多數代碼都知道。 – zapl

+0

我必須使用file://來允許播放每個錄音。我嘗試了沒有它..它不玩,但有暫停按鈕,然後當我推暫停它是在錄音結束,然後當我按下播放,應用程序崩潰(通常它只是再次播放)。我發現解決方案在一個stackoverflow答案,我無法再找到。 問題是,一組記錄以「file://」開頭,另一組不記錄,我將名稱的末尾作爲putExtra發送,而我只能有一個文件路徑字符串。 –

+0

如果路徑以'/'開頭,那麼添加'file://'怎麼辦?'然後你的一切都是一樣的 – zapl

回答

0

我認爲文件:設置原始文件路徑

1)代碼/ /是文件的URI,例如在媒體播放器中資源可以存在於本地存儲(file://)或以上互聯網(HTTP://)

「轉換」 字符串URI使用

Uri uri = Uri.parse("http://www.google.com"); 

和 「轉換」 URI到文件使用

File file = new File(uri.getPath()); 
+0

你能解釋一下我應該如何在我的情況下使用它? –

+0

你寫道:「我最好的猜想是,如果我可以找到一種方法,不必在文件路徑的其餘部分使用」file://「,那麼這將是理想的」你不應該使用file://前綴(URI )重命名文件,只需使用文件路徑即可。 但是如果你想得到URI(file://),因爲它是你的mediaplayer所必需的,使用'Uri uri = Uri.fromFile(filepath);' –

+0

如果它不回答你的問題,請更新你的問題,因爲我不喜歡不明白你想要什麼... –