Java Android资源-从语音包中检索随机语音线路

Java Android资源-从语音包中检索随机语音线路,java,android,android-mediaplayer,android-resources,Java,Android,Android Mediaplayer,Android Resources,对于一个小游戏,我正在编程,我试图为用户提供一些语音线路,以满足用户的口味。我已经录制了好几行,它们的格式都是languageCode\u packageName\u name01.mp3 因为我不想一直播放相同的几行,所以我打算录制几个版本,并在检索它们时随机选择一个。例如,检索“开始”的行两次可能导致播放de_std_start01,然后播放de_std_start06 因为我对安卓系统还很陌生,所以我想就这个实现寻求帮助。我不确定是应该将原始文件夹用于此任务,还是使用资产文件夹。如果可能的

对于一个小游戏,我正在编程,我试图为用户提供一些语音线路,以满足用户的口味。我已经录制了好几行,它们的格式都是
languageCode\u packageName\u name01.mp3

因为我不想一直播放相同的几行,所以我打算录制几个版本,并在检索它们时随机选择一个。例如,检索“开始”的行两次可能导致播放
de_std_start01
,然后播放
de_std_start06

因为我对安卓系统还很陌生,所以我想就这个实现寻求帮助。我不确定是应该将原始文件夹用于此任务,还是使用资产文件夹。如果可能的话,我想实现这样的文件夹结构,据我所知,需要使用assets文件夹,以便能够简单地在文件夹中拖放新文件,然后随机选择时会考虑到这一点:

<root folder>
- de
-- std
--- start
---- start01.mp3
---- start02.mp3
...

-德
--性病
---开始
----start01.mp3
----start02.mp3
...

当给定指定
de
std
start
的参数时,我如何检索不同的文件并随机选择其中一个?谢谢你的帮助

如果您将它们包括在原始文件夹中,您应该能够访问它们,如下所示:

//from your activity

AudioService audioService = new AudioService;
int randomTune = audioService.getRandom();
MediaPlayer mediaPlayer = MediaPlayer.create(context, randomTune);
mediaplayer.start;

//From a seperate service class

Class AudioService {

    private int[] audioFiles = {
        R.raw.song1, R.raw.song2, R.raw.song3, R.raw.song4, R.raw.song5, R.raw.song6
    };
我相信您的文件夹结构会有一定的灵活性,因为您正在用R类包装实际的资源,并在代码中引用它

public int getRandom(){
  // Here i am asking for a random number between 0 and 1, multiplying by 6, rounding 
  // it down, and explicitly casting to int.
  // Result will be random int between 0 and 5. This will be the array index that 
  // randomly chooses the song.  
    private int randomIndex;
    randomindex = (int) Math.floor(6 * Math.random);
    return this.audioFiles[randomIndex];
}

}

感谢您的快速回答!我认为这种方法会带来巨大的效果,我将在未来几天内实施它并提供反馈!