如何在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);