3
請查看我的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的UI?我需要添加一些東西嗎?
非常感謝。儘管我仍然在使服務更新活動用戶界面,但我相信你指出了我的正確方向。再次感謝:) – iTurki
@iturki:我正在研究類似的應用程序。你可以分享一下關於在Activity中管理播放器服務和UI更新的經驗嗎? –
我認爲有幾個選項可以用來根據播放器服務中的更改更新UI。 1.在綁定到播放器服務時註冊一個監聽器,並使用回調函數爲您提供有關播放器服務更改的更新。 2.(可能是最簡單的方法)使用播放器服務中的廣播來指示更新並在您的用戶界面中監聽這些廣播。 – Aldryd