gpt4 book ai didi

android - 如何在Android上基于字符串变量播放音频文件

转载 作者:行者123 更新时间:2023-12-03 01:39:51 26 4
gpt4 key购买 nike

因此,我在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并最终将其传递到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) {}

关于android - 如何在Android上基于字符串变量播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48271598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com