我想知道你是否可以提供帮助。我试图在用户点击按钮时播放随机声音(来自一组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。有什么想法吗?
非常感谢。
答案 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资源必须是整数,从这个想法开始