所以我在Android上构建一个界面,用户输入一个单词,然后如果数据库中存在该单词,则会出现一个按钮,当用户点击它时“OnClick = buttonClicked” - 声音播放
有很多示例将特定字符串名称作为MediaPlayer的参数处理,但我还没有看到任何处理字符串变量的内容。
这就是我的意思:
如果您想播放播放飞机声音的特定音频。您将创建一个方法来处理按钮单击:
//play airplance.mp3 inside of res/raw:
public void buttonClicked(View view) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.airplane);
mp.start();
}
有效。
现在,如果不是指定String名称,我想使用String变量 myInput :
EditText editText = (EditText) findViewById(R.id.input);
String myInput = editText.getText().toString();
我应该如何在媒体播放器中定义它?导致以下情况不起作用:
public void buttonClicked(View view) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.myInput);
mp.start();
}
我也试过使用getResources()。getIdentifier():
public void buttonClicked(View view) {
int resID=getResources().getIdentifier(myInput, "raw", this.getPackageName());
MediaPlayer mp = MediaPlayer.create(this, resID);
mp.start();
}
但这里应用程序崩溃了!
任何人都可以提供帮助吗?非常感谢!
答案 0 :(得分:0)
经过长时间的斗争,我终于找到了答案。
如果 myInput 是变量,则可以使用路径的String,将其解析为Uri,最后将其传递给create()。我也使用了try-catch,因为我注意到如果在文件夹中找不到该文件,那么应用程序崩溃了。以下是适用于我的解决方案:
String uriPath = "android.resource://" + getPackageName() + "/raw/" + myInput;
Uri uri = Uri.parse(uriPath);
mp = MediaPlayer.create(this, uri);
try {
mp.start();
}
catch (Exception e) {}