MediaPlayer Сервис Android

Я новичок в Android. Я создаю сервис для медиаплеера, чтобы он мог продолжать воспроизводить песню, даже если я закрою приложение. Я создал активность для медиаплеера, и у него есть все функции , такие как play , pause , next , previous, seekbar, а также включает oncompletionlistener . Все работает отлично. Но теперь я хочу, чтобы всем управляла служба.

Я создал класс MyService:

public class MyService extends Service {

    public static MediaPlayer mp;

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        mp = new MediaPlayer();     
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {  
        return START_STICKY;
    }

но в моей деятельности у меня плеер создал ArrayList для Songlist, из которого я беру currentsongIndex , и через него я поддерживаю все функции, такие как next, previous и all.. Теперь в Службе как мне получить songlist, который также требуется в моей деятельности ?? Где я должен создать объект MediaPlayer в сервисе или деятельности ??

для MediaPlayer я предложил http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/ . Для моего кода media player вы можете обратиться к этому сайту. Спасибо. Pleaze очистить мои сомнения. Я так запуталась. Ответить мне в ближайшее время..

3 ответов


вы на правильном пути. Я адаптировался из образцов SDK; вот как я это делаю, и он отлично работает. Из вашего ArrayList (в вашей деятельности не из службы) вызовите

onListItemClick

и запустите намерение, которое запускает музыкальный сервис:

startService(new Intent(MusicService.ACTION_PLAY));

в вашем манифесте вам нужно будет добавить:

 <intent-filter>
            <action android:name="com.blah.blah.action.PLAY" />
           <xxx xxx> 
 </intent-filter>

и, конечно, в вашем музыкальном сервисе вам нужно получить намерение:

public int onStartCommand(Intent intent, int flags, int startId) {
    String action = intent.getAction();
    if (action.equals(ACTION_PLAY))
        processPlayRequest();
  }

обязательно добавьте намерения для skip, rewind, stop так далее. Дай мне знать, если это поможет.


получение приложения для запуска в фоновом режиме должно быть позаботилось о самой "службе".
Попробуйте следовать этому примеру http://www.vogella.com/articles/AndroidServices/article.html
Сервис предназначен для работы в фоновом режиме.


Я прошел через то же самое! Это долгий путь, чтобы разработать даже действительно большое приложение mp3-плеер. Ответ длинный.

вот несколько ресурсов, которые мне очень помогли. Android имеет статью об этом в своих документах разработчика:

http://developer.android.com/guide/components/services.html

обратите внимание на то, что говорится в нижней части этой длинной статьи о связанных службах и работает на переднем плане.

кроме того, управление состоянием игрока-это то, что вызвало у меня больше всего головных болей.

вы также захотите взглянуть на threading, потому что создание этой новой службы по-прежнему будет выполнять все в основном потоке пользовательского интерфейса, звучит безумно, но верно. Взгляните на ExecutorService для управления пулами потоков. Хотел бы я сказать, что это было проще.

к сожалению, большая часть моего формального обучения со всего интернета, но с услугами android происходит от платного сайт:

http://www.pluralsight.com/training/Courses/TableOfContents/android-services

Это хороший ресурс для всех программистов, я думаю, но имеет большие разделы о многих аспектах программирования для Android, которые только кратко остановиться на других сайтах учебник.

ресурсы в Vogella также хороши, упомянутые выше.