Android: музыка в случайном порядке - нужно ли создавать новый сервис для каждой песни? - PullRequest
0 голосов
/ 12 февраля 2012

У меня есть приложение, которое поддерживает тасование.Я не уверен, должен ли я создать новый Сервис для каждой песни и уничтожить предыдущий?

Почему я так думаю, потому что в настоящее время я перемешиваю песни в одном сервисе с одним медиаплеером.Тем не менее, песня должна остановиться где-то посередине, и следующая песня должна начать играть - но теперь я могу слышать их обоих, хотя у меня есть только один MediaPlayer.Я подозреваю, что что-то не так с моими функциями ввода-вывода, но было бы проще управлять каждым треком в его собственном сервисе.

1 Ответ

0 голосов
/ 12 февраля 2012

Используете ли вы SoundPool.Выглядит это так:

soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);

Число 5 выше означает, что одновременно может работать максимум 5 потоков.Так.вы просто измените 5 на 1. И если вы используете функцию других.У конструктора его метода вы должны заметить параметр, имя которого похоже на maxStream

И, конечно, что-то зависит от вашего кода, например, если вы сделаете так:

public void onSufftle(){
   String musicfile = Random(...); //your random algorithm to sufftle music
   AssetManager assetManager = getAssets();
   AssetFileDescriptor descriptor = assetManager.openFd(musicfile);                   mediaPlayer.setDataSource(descriptor.getFileDescriptor(),descriptor.getStartOffset(),descriptor.getLength());
   MediaPlayer mediaPlayer = new MediaPlayer();
   mediaPlayer.prepare();
   mediaPlayer.start();    

И, конечно, если ваш код подобен этому, каждая новая музыка - это новый сервис, потому что вы объявляете новый экземпляр MediaPlayer.

Так что внимательно проверьте ваш код еще раз:)

...