我目前正在研究一個簡單的Android應用程序,現在我正試圖讓它加載並播放聲音。我面臨的問題是我想要它使用的聲音基於一個字符串(與聲音文件名稱相同)。其原因是代碼簡單並添加到代碼中。Android根據字符串加載和播放聲音
現在很不幸,我不能只用一個字符串來代替引用實際的聲音,但是有沒有辦法讓我比較一個字符串與整個原始文件夾以找到匹配的聲音,或者是其他一些替代方法手動定義每個聲音?
謝謝你的時間。
我目前正在研究一個簡單的Android應用程序,現在我正試圖讓它加載並播放聲音。我面臨的問題是我想要它使用的聲音基於一個字符串(與聲音文件名稱相同)。其原因是代碼簡單並添加到代碼中。Android根據字符串加載和播放聲音
現在很不幸,我不能只用一個字符串來代替引用實際的聲音,但是有沒有辦法讓我比較一個字符串與整個原始文件夾以找到匹配的聲音,或者是其他一些替代方法手動定義每個聲音?
謝謝你的時間。
This page說明如何使用getresources().getidentifier()
。
爲什麼你需要這樣做?如果這些文件已經存在於原始文件中,並且您只希望將文件的名稱命名爲strong,那麼執行此操作的任何數量的編碼可能需要更長的時間,然後只需引用該文件即可,因爲參考文件僅爲:
R.raw.file_name
代替:
FILE_NAME
那不是多了很多打字,尤其是如果它是一個簡單的應用程序。
該應用程序與內核中的音板類似。我想按照我提到的方式來做這件事的原因是會涉及很多很多聲音,而不是必須輸入許多行來加載它們,我只想根據字符串加載相關聲音,已經從應用程序的另一部分存在。 – Chance 2011-01-12 02:45:53
如果這就是你要做的,然後看看到soundpools: http://developer.android.com/reference/android/media/SoundPool.html 這是管理幾個不同的聲音文件的好方法。但仍然在某個時刻,你將不得不在某個時刻指向該文件。沒有辦法,我知道要拒絕整個原始文件夾,然後簡單地使用文件名作爲參考,但指向實際的文件是不是更多的打字。 – Stevy888 2011-01-12 02:54:10
嘗試使用反射包來檢查文件是否存在。
片段
try {
Class res = R.raw.class;
Field field = res.getField(<yourmediafile>);
//If the code reach here, that means media file exists.
} catch (Exception e) {
//No media file with that name
}
在手機等都不能挖掘出來,但看context.getresources()方法,我敢肯定有對的方法,那請問您在找什麼。創建像「R.raw.filename」這樣的字符串,並返回它。 – Emile 2011-01-12 02:42:09