如何根据 Android 上的字符串变量播放音频文件
how to play an audio file based on a string variable on Android
所以我在 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();
}
有效。
现在,如果不指定字符串名称,我想使用字符串变量 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();
}
但这里也是应用程序崩溃!
有人可以帮忙吗?非常感谢!
经过长期的努力,我终于找到了答案。
如果myInput是变量,那么可以使用路径的String,解析为Uri,最后传递它进入创建()。我还使用了 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) {}
所以我在 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();
}
有效。
现在,如果不指定字符串名称,我想使用字符串变量 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();
}
但这里也是应用程序崩溃!
有人可以帮忙吗?非常感谢!
经过长期的努力,我终于找到了答案。
如果myInput是变量,那么可以使用路径的String,解析为Uri,最后传递它进入创建()。我还使用了 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) {}