如何在android上从原始阵列获取随机音频文件?
这种方法可以将问题随机化如何在android上从原始阵列获取随机音频文件?,android,Android,这种方法可以将问题随机化 This is my array, in the form of audio files int[] rawQuetion = {R.raw.alikhlas, R.raw.alkafirun};// this for question int [] rawAnswer={R.raw.jwbaliklas,R.raw.alfalaq };// this for answer //fisher-yates Shuffle 公共空间playSoal(){ Shuffl
This is my array, in the form of audio files
int[] rawQuetion = {R.raw.alikhlas, R.raw.alkafirun};// this for question
int [] rawAnswer={R.raw.jwbaliklas,R.raw.alfalaq };// this for answer
//fisher-yates Shuffle
公共空间playSoal(){
Shufflearay(rawQuetion);
试一试{
int idx=new Random().nextInt(rawQuetion.length);
mp=MediaPlayer.create(this,rawQuetion[idx]);
mp.start();
}
静态无效随机播放(int[]arr)
{
随机rnd=新随机();
对于(int i=arr.length-1;i>0;i--)
{
整数指数=rnd.nextInt(i+1);
//交换
int a=arr[索引];
arr[index]=arr[i];
arr[i]=a;
}
}
public void audioFile()引发IOException{
InputStream is=getResources().openRawResource(R.raw.jwbaliklas);//我想从基于rawAnswer的rawQuestion获取音频文件
ByteArrayOutputStream out=新建ByteArrayOutputStream();
BufferedInputStream in=null;
in=新的BufferedInputStream(is);
int-read;
字节[]buff=新字节[1024];
而((read=in.read(buff))>0)
{
out.write(buff,0,read);
}
out.flush();
byte[]audioBytes=out.toByteArray();
对于(int i=0;i
您的答案就在这里:使用openrawsource()
打开原始资源。您不需要在代码中硬编码特定的参数值。该方法采用int
参数。如何确定值以将其完全传递给您。例如,您可以声明audioFile()
方法获取整数参数并将其传递给openrawsource()
:
然后,在您有相应的问题/答案音频id的地方,您可以传递正确的id。您似乎已经有了问题要求的代码。请详细解释问题的性质。我想随机获取raw的音频文件RAWQUEST,我想根据RAWQUEST选择RAWQUEST选择RAWQUEST。获取t基于随机数的问题。基于随机数获得答案。我对在本节中编写代码审查感到困惑InputStream is=getResources().openRawResource(R.raw.jwbaliklas);用
rawQuetion[randomNumber]替换R.raw.jwbaliklas
,其中randomNumber
是一个介于0和rawQuetion.length-1之间的随机数。我还不明白resid是什么意思?我构建了类似于quizzesIt的应用程序。它是参数的名称。您可以根据需要命名参数。
//fisher-yates Shuffle
public void playSoal() {
shuffleArray(rawQuetion);
try{
int idx = new Random().nextInt(rawQuetion.length);
mp = MediaPlayer.create(this, rawQuetion[idx]);
mp.start();
}
static void shuffleArray(int[] arr)
{
Random rnd = new Random();
for (int i = arr.length - 1; i > 0; i--)
{
int index = rnd.nextInt(i + 1);
// Swap
int a = arr[index];
arr[index] = arr[i];
arr[i] = a;
}
}
public void audioFile() throws IOException{
InputStream is = getResources().openRawResource(R.raw.jwbaliklas);// I want get audio file from rawAnswer based rawQuestion
ByteArrayOutputStream out = new ByteArrayOutputStream();
BufferedInputStream in = null;
in = new BufferedInputStream(is);
int read;
byte[] buff = new byte[1024];
while ((read = in.read(buff)) > 0)
{
out.write(buff, 0, read);
}
out.flush();
byte[] audioBytes = out.toByteArray();
for (int i = 0; i < audioBytes.length; i++) {
audioBytes[i] = (byte) ((audioBytes[i]) & 0xFF); }
absNormalizedSignal = hitungFFT(audioBytes);
AppLog.logString("===== INI DARI AUDIO FILE");
}
public void audioFile() throws IOException{
InputStream is = getResources().openRawResource(R.raw.jwbaliklas);// I want get audio file from rawAnswer based rawQuestion
public void audioFile(final int resid) throws IOException{
InputStream is = getResources().openRawResource(resid);