Android studio 如何在Android Studio上制作音乐洗牌?使用或不使用数组

Android studio 如何在Android Studio上制作音乐洗牌?使用或不使用数组,android-studio,libgdx,Android Studio,Libgdx,我需要帮助,使歌曲洗牌(混合),但我不知道如何,而且我希望它去到另一个音乐,每次没有重复 public class MusicMix { private Music music1, music2, music3, music4, music5,music6,music7,music8,music9,music10,music11,music12,music13,music14,music15,music16,music17; music1 = Gdx.audio.newMus

我需要帮助,使歌曲洗牌(混合),但我不知道如何,而且我希望它去到另一个音乐,每次没有重复

public class MusicMix {

    private Music music1, music2, music3, music4, music5,music6,music7,music8,music9,music10,music11,music12,music13,music14,music15,music16,music17;

    music1 = Gdx.audio.newMusic(Gdx.files.internal("musicA.mp3"));
    music2 = Gdx.audio.newMusic(Gdx.files.internal("musicB.mp3"));
    music3 = Gdx.audio.newMusic(Gdx.files.internal("musicC.mp3"));
    music4 = Gdx.audio.newMusic(Gdx.files.internal("musicD.mp3"));
    music5 = Gdx.audio.newMusic(Gdx.files.internal("musicE.mp3"));
    music6 = Gdx.audio.newMusic(Gdx.files.internal("musicF.mp3"));
    music7 = Gdx.audio.newMusic(Gdx.files.internal("musicG.mp3"));
    music8 = Gdx.audio.newMusic(Gdx.files.internal("musicH.mp3"));
    music9 = Gdx.audio.newMusic(Gdx.files.internal("musicJ.mp3"));
    music10 = Gdx.audio.newMusic(Gdx.files.internal("musicK.mp3"));
    music11 = Gdx.audio.newMusic(Gdx.files.internal("musicL.mp3"));
    music12 = Gdx.audio.newMusic(Gdx.files.internal("musicM.mp3"));
    music13 = Gdx.audio.newMusic(Gdx.files.internal("musicN.mp3"));
    music14 = Gdx.audio.newMusic(Gdx.files.internal("musicO.mp3"));
    music15 = Gdx.audio.newMusic(Gdx.files.internal("musicP.mp3"));
    music16 = Gdx.audio.newMusic(Gdx.files.internal("musicQ.mp3"));
    music17 = Gdx.audio.newMusic(Gdx.files.internal("musicR.mp3"));
 }

我试图以这种方式实现你的要求

public class TestGame extends Game {

    private Array<String> musicName;
    private Array<Music> musicList;
    private IntArray intArray;

    @Override
    public void create() {

        musicName=new Array<String>(new String[]{"sound/x1.ogg","sound/x2.ogg","sound/x3.ogg","sound/x4.ogg","sound/x5.ogg"});
        musicList=new Array<Music>();
        intArray=new IntArray();

        for (String path:musicName) {

            Music music=Gdx.audio.newMusic(Gdx.files.internal(path));
            musicList.add(music);
            intArray.add(musicName.indexOf(path,true));
            music.setOnCompletionListener(new OnComplete(this));
        }

        int value=MathUtils.random(musicList.size-1);
        intArray.removeValue(value);
        musicList.get(value).play();

    }

    public class OnComplete implements Music.OnCompletionListener {
        private TestGame testGame;
        public OnComplete(TestGame game){
            testGame=game;
        }

        @Override
        public void onCompletion(Music music) {
            testGame.playUnPlayedMusic();
        }
    }

    public void playUnPlayedMusic(){

        int value ;
        if(intArray.size>0) {
            value = intArray.get(MathUtils.random(intArray.size - 1));
            intArray.removeValue(value);

        }else {
            for (int i=0;i<musicList.size;i++)
                intArray.add(i);

            value = intArray.get(MathUtils.random(intArray.size - 1));
            intArray.removeValue(value);
        }

        Music music= musicList.get(value);
        music.play();
    }

    @Override
    public void render() {

    }
}
公共类TestGame扩展了游戏{
专用阵列音乐名称;
专用阵列音乐播放器;
私人IntArray IntArray;
@凌驾
公共void create(){
musicName=新数组(新字符串[]{“sound/x1.ogg”、“sound/x2.ogg”、“sound/x3.ogg”、“sound/x4.ogg”、“sound/x5.ogg”});
musicList=新数组();
intArray=新intArray();
用于(字符串路径:musicName){
Music Music=Gdx.audio.newMusic(Gdx.files.internal(path));
音乐列表。添加(音乐);
add(musicName.indexOf(path,true));
music.setOnCompletionListener(新的OnComplete(this));
}
int值=MathUtils.random(musicList.size-1);
InArray.removeValue(值);
musicList.get(value.play();
}
公共类OnComplete实现Music.OnCompletionListener{
私人测试游戏;
公共OnComplete(测试游戏){
测试游戏=游戏;
}
@凌驾
公共空间完成(音乐){
testGame.playunPayedMusic();
}
}
public void playdmusic(){
int值;
如果(阵列大小>0){
value=intArray.get(MathUtils.random(intArray.size-1));
InArray.removeValue(值);
}否则{

对于(int i=0;i首先创建一个数组,它应该使您的生活更轻松。而不是一个接一个地手动创建

Array<Music> musics = new Array<Music>();
        for (int i = 65; i < 25; i++) {
            //The ascii of 65 = A
            char ascii = (char) i;
            Music music = Gdx.audio.newMusic(Gdx.files.internal("music" + ascii + ".mp3"));
            musics.add(music);
        }

我不认为你想在Android上同时加载两到三首以上的音乐。
        musics.shuffle();