Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在布局活动中显示随机声音结果的值,以便播放_Java_Android_Android Mediaplayer_Android Imageview - Fatal编程技术网

Java 如何在布局活动中显示随机声音结果的值,以便播放

Java 如何在布局活动中显示随机声音结果的值,以便播放,java,android,android-mediaplayer,android-imageview,Java,Android,Android Mediaplayer,Android Imageview,我在原始android studio文件夹中有3个音频: 声音1.mp3 Sound2.mp3 Sound3.mp3 然后,我想使用fisher-yates洗牌算法进行音频洗牌。 下面的代码正确吗?或者我需要先初始化它吗 / package com.example.once; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.media.MediaPla

我在原始android studio文件夹中有3个音频:

声音1.mp3 Sound2.mp3 Sound3.mp3

然后,我想使用fisher-yates洗牌算法进行音频洗牌。 下面的代码正确吗?或者我需要先初始化它吗

/ package com.example.once;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.util.Random;
import java.util.Arrays;



public class Main4Activity extends AppCompatActivity {
// Java Program to shuffle a given array

    public static class ShuffleRand {
        // A Function to generate a random permutation of arr []
        static void randomize (String arr [], int n) {
            // Creating a object for Random class
            Random r = new Random ();

            // Start from the last element and swap one by one. We don't
            // need to run for the first element that's why i> 0
            for (int i = n - 1; i> 0; i--) {

                // Pick a random index from 0 to i
                int j = r.nextInt (i + 1);

                // Swap arr [i] with the element at random index
                String temp = arr [i];
                arr [i] = arr [j];
                arr [j] = temp;
            }
            // Prints the random array
            System.out.println (arr [0]);
            System.out.println (Arrays.toString (arr));
        }

        // Driver Program to test above function
        public static void main (String [] args) {

            String [] arr = {"R.raw.sound1, R.raw.sound2, R.raw.sound3"};
            int n = arr.length;
            randomize (arr, n);
        }

    }
}
在获得随机值(arr[0])后,我想用onClick PlaySong在play按钮的.xml活动布局中输入值(arr[0])。怎么做

<ImageView
        android: id = "@ + id / imageView5"
        android: layout_width = "75dp"
        android: layout_height = "80dp"
        android: onClick = "playSong"
        android: layout_marginTop = "50dp"
        app: layout_constraintEnd_toEndOf = "parent"
        app: layout_constraintStart_toStartOf = "parent"
        app: layout_constraintTop_toBottomOf = "@ + id / imageView8"
        app: srcCompat = "@ drawable / play" />

您可以这样做:

private MediaPlayer mMediaPlayer;

public void stopSong() {
    if (mMediaPlayer != null) {
        mMediaPlayer.release();
        mMediaPlayer = null;
    }
}

public void playSong(Context c, int rid) {
    stop();

    mMediaPlayer = MediaPlayer.create(c, rid);
    mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            stop();
        }
    });

    mMediaPlayer.start();
}
因此,您可以调用此函数:

 playSong(this, getResources().getIdentifier(arr[0], "raw", getPackageName());
您可以这样做:

private MediaPlayer mMediaPlayer;

public void stopSong() {
    if (mMediaPlayer != null) {
        mMediaPlayer.release();
        mMediaPlayer = null;
    }
}

public void playSong(Context c, int rid) {
    stop();

    mMediaPlayer = MediaPlayer.create(c, rid);
    mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            stop();
        }
    });

    mMediaPlayer.start();
}
因此,您可以调用此函数:

 playSong(this, getResources().getIdentifier(arr[0], "raw", getPackageName());

谢谢你的回答。但是,im实现你的代码,在变量arr中的第109行有错误。你能帮助我吗?然后在活动主界面上,我不能调用函数playSong[谢谢你的回答。但是,im实现你的代码,在变量arr中的第109行有错误。你能帮助我吗?然后在活动主界面上,我不能调用函数playSong[