我需要通過播放點擊聲音向用戶發送一些反饋。我試圖將MediaPlayer.create()與內置的OGG聲音文件一起使用,主要是KeypressStandard.ogg。Android,訪問內部聲音文件作爲資源ID
如何將這些文件稱爲資源ID?
我需要通過播放點擊聲音向用戶發送一些反饋。我試圖將MediaPlayer.create()與內置的OGG聲音文件一起使用,主要是KeypressStandard.ogg。Android,訪問內部聲音文件作爲資源ID
如何將這些文件稱爲資源ID?
是指它由ID爲任何人有興趣在這個問題上,發現了這樣一個解決方案:
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), Uri.parse("/system/media/audio/ui/Effect_Tick.ogg"));
mp.start();
我裏面觸發此一個AsyncTask,我在那裏做視覺反饋雜事,在onExExcute()我畫「選擇」狀態,播放點擊聲音並等待300mS。在onPostExecute(),我重繪對象和免費資源,做工非常不錯,示例代碼:
private class FeedbackHandler extends AsyncTask<Void,Void,Void>{
MediaPlayer mp;
@Override
protected Void doInBackground(Void... arg0) {
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
mp.release(); // free resources
mp=null; // help GC
myDrawUnselectedState(myObject); // draw normal state
ImageView iv = (ImageView) findViewById(R.id.myobjectcontainer);
iv.invalidate(); // mark UI for refresh
}
@Override
protected void onPreExecute() {
super.onPreExecute();
myDrawSelectedState(myObject); // draw selected
ImageView iv = (ImageView) findViewById(R.id.mycontainer);
iv.invalidate(); // mark for refreshing
mp = MediaPlayer.create(getApplicationContext(), Uri.parse("/system/media/audio/ui/Effect_Tick.ogg"));
mp.start(); // play sound
SystemClock.sleep(300); // wait a little bit for user to see effect
}
}
順便說一句,Effect_Tick.ogg它的一個,當你按下一個按鈕,火災。看起來這些文件名稱幾乎都是Android標準,可以在與Android版權免責聲明簽署的許多不同設備中找到。
這些文件應在原文件夾,你可以用R.raw.KeypressStandard
我知道,我想使用內建的聲音,如/system/media/audio/ui/KeypressStandard.ogg。任何線索? – ruhalde
我建議你將該文件複製到你的應用程序,因爲並非所有的Android手機都帶有該聲音文件...並檢查版權:)。 – Augusto
沒關係,發現該怎麼做 - > MediaPlayer.create(getApplicationContext(),Uri.parse(「/ system/media/audio/ui/KeypressStandard.ogg」)); – ruhalde