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 также хороши, упомянутые выше.
