Пожалуйста, взгляните на мой simple three-methods Service class
, который транслирует аудио и воспроизводит его напрямую.Потоковое аудио с использованием сервиса
public class StreamService extends Service {
private static final String TAG = "MyService";
String url;
MediaPlayer mp;
@Override
public void onCreate() {
Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
Log.d(TAG, "onCreate");
mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
@Override
public void onDestroy() {
Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
Log.d(TAG, "onDestroy");
mp.stop();
}
@Override
public int onStartCommand(Intent intent, int flags, int startid) {
Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
Log.d(TAG, "onStart");
url = intent.getExtras().getString("url");
try {
mp.setDataSource(url);
mp.prepare();
mp.start();
} catch(Exception e){}
return START_STICKY;
}
}
В моей деятельности, у меня есть две кнопки для воспроизведения/остановки мультимедийного файла:
playButton
выполнить это:Intent i = new Intent(this, StreamService.class); i.putExtra("my_mp3_url_string"); startService(i);
stopButton
выполнить это:stopService(new Intent(this, StreamService.class));
Теперь у меня есть несколько вопросов:
- как я могу реализовать в
pauseButton
? Я хочу приостановить работу носителя в службе - Выполняется ли мой способ воспроизведения/остановки медиа/службы? Есть ли лучший способ?
- Как я могу (периодически) обновлять пользовательский интерфейс моей деятельности с моей службы? мне нужно что-то добавить?
Спасибо большое. Несмотря на то, что я все еще пытаюсь обновить интерфейс Activity, я верю, что вы указали мне правильное направление. Еще раз спасибо :) – iTurki
@iturki: Я работаю над подобным приложением. Можете поделиться своим опытом об управлении сервисом игрока и обновлении пользовательского интерфейса в Activity? –
Я думаю, что есть несколько вариантов, которые вы могли бы внести, чтобы обновить интерфейс, основанный на изменениях в сервисе плеера. 1. Зарегистрируйте слушателя, когда вы привязываетесь к службе игрока с классом, который вы делаете с обратными вызовами, которые дают вам обновления об изменениях в службе плеера. 2. (возможно, самый простой способ). Используйте трансляции из службы проигрывателя, чтобы указать обновления и прослушивать эти трансляции в пользовательском интерфейсе. – Aldryd