Android 资源 - 从语音包中检索随机语音线路
Android resources - Retrieving a random voice line from a voicepack
对于我正在编写的一个小游戏,出于风味原因,我试图为用户提供一些语音线路。我已经录了好几行了,都是languageCode_packageName_name01.mp3
的格式。
因为不想一直播放同样的几行,所以打算录几个版本,找的时候随机挑一个。例如,两次检索 "start" 的行可能会导致播放 de_std_start01
,然后播放 de_std_start06
。
由于我对 android 很陌生,所以我想寻求有关此实现的帮助。我不确定是否应该使用 raw 文件夹或 assets 文件夹来完成这项任务。如果可能的话,我想实现这样的文件夹结构,据我了解需要使用资产文件夹,以便能够简单地将新文件拖放到文件夹中,然后将其考虑在内用于随机选择。:
<root folder>
- de
-- std
--- start
---- 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 class 包装实际资源并在您的代码中引用它。
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];
}
}
对于我正在编写的一个小游戏,出于风味原因,我试图为用户提供一些语音线路。我已经录了好几行了,都是languageCode_packageName_name01.mp3
的格式。
因为不想一直播放同样的几行,所以打算录几个版本,找的时候随机挑一个。例如,两次检索 "start" 的行可能会导致播放 de_std_start01
,然后播放 de_std_start06
。
由于我对 android 很陌生,所以我想寻求有关此实现的帮助。我不确定是否应该使用 raw 文件夹或 assets 文件夹来完成这项任务。如果可能的话,我想实现这样的文件夹结构,据我了解需要使用资产文件夹,以便能够简单地将新文件拖放到文件夹中,然后将其考虑在内用于随机选择。:
<root folder>
- de
-- std
--- start
---- 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 class 包装实际资源并在您的代码中引用它。
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];
}
}