2015-02-24 92 views
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()功能,但如何使用它?它應該用於服務類還是活動類?
還有一件事需要考慮,我使用了多個意圖,並確保當我改變爲第二或其他意圖時,服務仍在運行,意味着改變意圖不會停止播放背景音樂......除非主頁按鈕按下或退出程序(我已經完成了這一項)。

回答

0

你有你的onPause和onResume方法。您通常不需要擴展Application類,而是在Activity中使用它(尤其是如果您的應用程序只有一個Activity)。

但是,爲什麼要啓動和停止服務?爲什麼不暫停/取消暫停音樂?您可以發送暫停/取消暫停(或甚至切換)音樂播放的意圖。

+0

如何發送意圖暫停/恢復音樂? – Newbie 2015-02-24 16:44:32

+0

基本上你會創建一個意圖,你的服務將註冊,並處理該意圖。看看這個答案的更多信息,它有你需要的一切:http://stackoverflow.com/a/21619248/447842 – ajacian81 2015-02-24 16:49:30

相關問題