单击按钮上播放随机声音



我想知道您是否可以提供帮助。我试图在用户单击按钮时播放随机声音(从一组7个可用声音中)。到目前为止,我有:

Random rand = new Random();
int rndm = rand.nextInt(6) + 1; // I have 7 random sounds to play sequentially named 'my sound' + n.
String sndName = "mysound" + rndm;  // Assign a random # to the end of the sound file.   
mp1 = MediaPlayer.create(getApplicationContext(), R.raw.sndName); // ERROR HERE: Expects an Int
mp1.start();

我希望我的一个声音文件(mySound1,mySound2,mySound3,...)会随机播放,但Eclipse抱怨MP1分配期望有INT。有什么想法吗?

非常感谢。

使用

 int[] sounds={R.raw.mysound1, R.raw.mysound2, R.raw.mysound3,R.raw.mysound4,R.raw.mysound5,R.raw.mysound6,R.raw.mysound7};

然后

 Random r = new Random();
 int Low = 0;
 int High = 7;
 int rndm = r.nextInt(High-Low) + Low; 
 mp1 = MediaPlayer.create(getApplicationContext(),sounds[rndm]);
 mp1.start();

问题是您需要获取资源ID。您需要使用类似的内容。

int id = getResources().getIdentifier("mysound" + rndm, "raw", getApplicationInfo().packageName);
mp1 = MediaPlayer.create(getApplicationContext(), id);

两件事。首先,我建议您查看上面创建字符串的线。如果我没记错的话,您可能需要使用诸如字符串之类的函数,以使整数成为字符串以连接您的字符串。

接下来,我不相信R.Raw会这样工作。

我的建议是,如果您只有7个项目,请制作一个持有资源的数组。

int [] resources = {r.raw.mysound1,r.raw.mysound2} etc

然后使用以前的索引选择正确的R文件。

因此,在媒体创建行中,用资源[rndm]

替换r.raw.sndname

使用变量错误。请参阅下面的代码: //1. r.raw.sndname是恒定的 mp1 = MediaPlayer.Create(getApplicationContext(),r.raw.sndname); //2. Android资源必须整数,从这个想法开始

最新更新