2011-03-07 118 views
3

我有一個簡單的應用程序,它有幾個活動。我在用戶使用應用程序時播放一些背景音樂。我也希望它在用戶使用應用程序的同時播放整個時間,而不是在應用程序不在前臺時播放。在Android應用程序的背景中播放音樂

我已閱讀並嘗試了幾件事情。我已經嘗試在第一個活動中啓動MediaPlayer,這與選項菜單類似,但是它不是在下一個活動中隨機退出或停止。我嘗試在第一個活動中啓動MediaPlayer,然後當按下按鈕開始下一個活動時,我保存當前位置時間,暫停MediaPlayer並將時間傳遞給下一個活動,然後在第一個活動中創建一個新的MediaPlayer下一個活動,並恢復。這種方式是可以的,但如果用戶點擊後退按鈕,事情會開始重疊,並且在應用程序不可見時它仍會播放。

我也看過使用onResume()和onPause(),但這隻適用於一次一個活動。我需要創建一項服務嗎?我以前從未使用過服務,但我不認爲這會在應用不可見時停止播放音樂。

我只是簡單地想添加一些背景音樂到我的應用程序。我認爲這會比這更容易。任何幫助或想法將不勝感激。也知道這是否有可能會有所幫助。

+0

具有u嘗試使用異步類? – Piyush 2011-05-13 08:14:31

+0

請參閱http://stackoverflow.com/questions/11490236/android-comprehensive-failproof-music-service-across-multiple-activites – 2013-01-23 14:22:14

回答

0

您需要爲此服務,您需要創建服務並綁定到onResume活動並將其解除綁定onStop,所以當所有活動都未綁定時,服務結束是實現音樂的最佳方式,導致整個應用程序

創建一個服務,然後做這樣的事情

public ServiceConnection Scon = new ServiceConnection() { 

    public void onServiceConnected(ComponentName name, IBinder binder) 
    { 
     mServ = ((DMusic.ServiceBinder) binder).getService(); 
    } 

    public void onServiceDisconnected(ComponentName name) 
    { 
     mServ = null; 
    } 
}; 

public void doBindService() 
{ 
    if (!mIsBound) 
    { 
     bindService(new Intent(this, DMusic.class), Scon, Context.BIND_AUTO_CREATE); 
     mIsBound = true; 
    } 
} 

public void doUnbindService() 
{ 
    if (mIsBound) 
    { 
     unbindService(Scon); 
     mIsBound = false; 
    } 
} 


@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    doBindService(); 
} 




@Override 
public void onStop() 
{ 
    super.onStop(); 
    doUnbindService(); 
} 
相關問題