我需要通过点击声音向用户发送一些反馈。我正在尝试使用内置OGG声音文件的MediaPlayer.create(),主要是KeypressStandard.ogg。
如何将这些文件称为资源ID?
答案 0 :(得分:2)
这些文件应该位于原始文件夹中,您可以通过id R.raw.KeypressStandard
答案 1 :(得分:2)
对于对这个问题感兴趣的人,找到了这样的解决方案:
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), Uri.parse("/system/media/audio/ui/Effect_Tick.ogg") );
mp.start();
我在AsyncTask里面解决了这个问题,我在那里做了视觉反馈杂务,在onPreExecute()中我画了“选中”状态,播放点击声并等待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版权免责声明签名的不同设备中找到。
答案 2 :(得分:0)
如果您想使用您的设备资源,您可以使用RingtoneManager或ToneGenerator进行硬编码。
Uri sound_uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
您还可以在网络上查找免费的音频文件。检查一下:https://rcptones.com/dev_tones/