Я только начинаю разработку Android и Java, и это мое первое приложение, чтобы познакомиться с разработкой Android. Я почти закончил приложение, осталось только перетасовать песни. Я пробовал много шагов, чтобы все исправить, и я просмотрел веб-страницы, и я ответил на вопрос, но я все еще не могу понять.Перемешать песни в музыкальном проигрывателе
Этот фрагмент кода в моем классе обслуживания, список воспроизведения передается от основной деятельности:
public void setPlayList(ArrayList<SongModel> playlist) {
playList = playlist;
//Arraylist of integer to hold the number of indices
list = new ArrayList<Integer>();
for(int i =0; i <= playList.size();i++){
list.add(i);
}
Collections.shuffle(list, new Random(System.nanoTime()));
}
Код ниже, как песни играют, этот фрагмент в configPlayBack() метод, который играет песню из песня ID:
long item = 0;
item = playList.get(MusicPref.isShuffle(this)? list.get(position): position).getSongId();
фрагмент кода для воспроизведения следующей композиции:
public void playNext() {
position++;
if (position >= playList.size()) {
position = 0;
}
configPlayBack();
}
Но песни по-прежнему воспроизводятся последовательно.
EDIT:
public void configPlayBack(){
prepared = true;
player.reset();
if (playList.size()>0){
long item = 0;
item = playList.get(MusicPref.isShuffle(this)? list.get(position):position).getSongId();
playItem(item);
}
}
public void playItem(long item){
Uri base = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Uri trackUri = ContentUris.withAppendedId(base, item);
try{
player.setDataSource(getApplicationContext(), trackUri);
}
catch(Exception e){
Log.e(TAG, "Errror setting data source", e);
}
try{
player.prepare();
}
catch(Exception ee)
{
ee.printStackTrace();
Log.e(TAG, "Error setting data source", ee);
Toast.makeText(getApplicationContext(), "Song corrupt or not supported", Toast.LENGTH_SHORT).show();
ee.printStackTrace();
isReady = false;
}
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
isReady = true;
setPlayState();
getAudioFocus();
mp.start();
updateNotificationPlayer();
updatePlayback();
updateSeek();
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
isReady = false;
mp.reset();
playNext();
}
});
}
});
}
отправлять весь ваш метод воспроизведения –
Я редактировал его, чтобы включить режим воспроизведения @Murat K. –