我需要通过播放点击声音向用户发送一些反馈。我试图将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