点击按钮播放随机声音

时间:2014-01-26 02:30:01

标签: android

我想知道你是否可以提供帮助。我试图在用户点击按钮时播放随机声音(来自一组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。有什么想法吗?

非常感谢。

4 个答案:

答案 0 :(得分:6)

使用

 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();

答案 1 :(得分:0)

问题是你需要获取资源ID才能传入。你需要使用这样的东西。

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

答案 2 :(得分:0)

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

接下来,我不相信r.raw会像那样工作。

我的建议是,如果您只有7个项目,请创建一个包含资源的数组。

int [] resources = {R.raw.mysound1,R.raw.mysound2}等

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

因此,在媒体创建行中,将R.raw.sndName替换为资源[rndm]

答案 3 :(得分:0)

你的程序使用变量错误。见下面的代码:     // 1. R.raw.sndName是常量     mp1 = MediaPlayer.create(getApplicationContext(),R.raw.sndName);     // 2. android资源必须是整数,从这个想法开始