0
public class BackgroundMusicService extends Service
{
int currentPos;
/** indicates how to behave if the service is killed */
int mStartMode;
/** interface for clients that bind */
IBinder mBinder;
/** indicates whether onRebind should be used */
boolean mAllowRebind;
MediaPlayer player;
@Override
public void onCreate() {
super.onCreate();
player = MediaPlayer.create(this, R.raw.tornado);
player.setLooping(true); // Set looping
player.setVolume(100,100);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
player.seekTo(currentPos);
player.start();
return 1;
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public boolean onUnbind(Intent intent) {
return mAllowRebind;
}
@Override
public void onRebind(Intent intent) {
}
public void onPause()
{
player.pause();
}
@Override
public void onDestroy() {
player.stop();
currentPos = player.getCurrentPosition();
}
}
這是播放背景音樂的服務,當按下home按鈕時如何暫停服務並在程序恢復時恢復服務?這裏是我的MainActivity:如何在主頁按鈕被按下時暫停服務,並在程序恢復時恢復服務?
public class MainActivity extends ActionBarActivity
{
int request_code = 1;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startService(new Intent(getBaseContext(), BackgroundMusicService.class));
}
@Override
protected void onDestroy()
{
super.onDestroy();
stopService(new Intent(getBaseContext(), BackgroundMusicService.class));
}
}
我覺得需要用onPause()
和onResume()
功能,但如何使用它?它應該用於服務類還是活動類?
還有一件事需要考慮,我使用了多個意圖,並確保當我改變爲第二或其他意圖時,服務仍在運行,意味着改變意圖不會停止播放背景音樂......除非主頁按鈕按下或退出程序(我已經完成了這一項)。
如何發送意圖暫停/恢復音樂? – Newbie 2015-02-24 16:44:32
基本上你會創建一個意圖,你的服務將註冊,並處理該意圖。看看這個答案的更多信息,它有你需要的一切:http://stackoverflow.com/a/21619248/447842 – ajacian81 2015-02-24 16:49:30