MediaPlayer Service Android

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

Я создал MyService Class:

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, и через него я поддерживаю все функции, такие как следующее, предыдущее и все. Теперь в службе, как мне получить список песен, который также требуется в моя деятельность? Где я должен создать объект MediaPlayer в сервисе или действии?

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

Ответ 1

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

onListItemClick

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

startService(new Intent(MusicService.ACTION_PLAY));

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

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

И, конечно же, в вашем Music Service вам нужно получить намерение:

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

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

Ответ 2

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

Ответ 3

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

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

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

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

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

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

К сожалению, большинство моих формальных тренировок со всего Интернета, но с услугами Android, поступает с платного сайта:

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

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

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