从原始文件夹获取随机声音文件 - Android - MediaPlayer

时间:2012-05-28 17:29:08

标签: android audio resources path media-player

我想:

  1. 生成随机数(足够简单)
  2. 取随机数并将其添加到某种动态路径
  3. 在媒体播放器创建中使用动态路径。
  4. E.g。

    资源文件夹(原始)包含 1.MP3 2.MP3 3.MP3

    随机数生成0到4之间的数字

    例如:2

    将随机数插入路径

    E.g。一个字符串?

    String PATH = "R.raw." + RANDOM-NUMBER
    
    MediaPlayer mp = MediaPlayer.create(context, PATH);
    

    然而,当然MediaPlayer使用URI变量而不是字符串,我确实尝试了

    myUri = Uri.parse("R.raw.2"); 
    

    但获取nullPointerException

    我想这很简单/直接回答,而我的知识只是躲避了我

    非常感谢

2 个答案:

答案 0 :(得分:4)

你无法用资源做到这一点。这是我看到你如何去做的。

int randomInt = generateRandomInt(), id;
switch (randomInt) {
case 1:
    id = R.raw.1;
    break;
case 2:
    id = R.raw.2;
    break;
...
}
setDataFromResource(getResources(), myMediaPlayer, id);

AFAIK,您必须使用setDataFromResource从R.raw设置媒体播放器的数据

答案 1 :(得分:2)

就我个人而言,我会这样做:

    //initializing the sounds
    final MediaPlayer sound1 = MediaPlayer.create(this, R.raw.1);
    final MediaPlayer sound2 = MediaPlayer.create(this, R.raw.2);
    final MediaPlayer sound3 = MediaPlayer.create(this, R.raw.3);

    //generate random number
    Random randomGenerator = new Random();
    int randomInt = randomGenerator.nextInt(3) + 1;

    //picking the right sound to play
    switch (randomInt){
    case 1: sound1.start();
    break;
    case 2: sound2.start();
    break;
    case 3: sound3.start();
    break;
    }