2012-01-09 64 views
1

我的應用程序中有幾個活動,並且在後臺播放音樂,我想要實現的是音樂應該在應用程序啓動時開始並在應用程序完成時播放去背景。有沒有簡單的解決方法,或者我應該實現某種系統來管理每個活動的回放?提前致謝。在多個活動應用程序中處理音樂播放

+0

此鏈接將幫助您在不使用服務的情況下執行此操作:http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion – Arash 2014-04-04 12:32:02

回答

2

您可以使用可隨時啓動和停止的服務播放音樂文件。

+0

這並不能解決問題,因爲我無法確切地知道在哪裏停止服務。用戶可以從一個活動回到前一個活動 - 然後我不應該停止播放,但他也可以關閉整個應用程序 - 那就是停止播放的時間了。有任何想法嗎? – Egor 2012-01-09 11:10:05

+0

請檢查ActivityManager以瞭解有關您的應用程序狀態和全部的信息。 – 2012-01-09 11:42:53

0

使用MediaPlayer服務實現它是實現這一點的最好方法。

如果您在活動中實現它,你將不得不 -

  • 每個活動都需要知道你正在播放的當前歌曲,播放的當前時間。
  • 當您啓動一項新活動時,您將不得不在當前活動中停止mediaplayer,並在新活動中重新啓動它並查找它,然後才能開始回放。
  • 音頻播放中會出現毛刺。如果他繼續在這些活動之間切換,這對用戶來說變得煩人。

如果您實現IT即服務 -

  • 你需要傳達到正在播放的音樂的新的活動。只需傳遞一個布爾值(isplaying
  • 每個活動將或更確切地應該知道在應用程序本身關閉之前它是否是上次活動。如果它知道這個信息,那麼它所需要做的就是檢查標誌並重新獲得該服務並在退出之前將其關閉。
  • 在活動之間切換時不會出現毛刺。
+0

事實上,只有一個配樂,它只是永遠循環。主要問題是每個活動都可能是最後的,因爲用戶只需按下硬件主頁按鈕,音樂就會繼續播放,這是一個很大的麻煩。 – Egor 2012-01-09 11:32:38

+0

是的,這就是我所說的問題,你不能在一個活動中啓動一個mediaplayer實例並忘記它,你將不得不在每個活動中與你一起。但有了服務,您可以在任何時間點重新獲得服務,但仍然可以在背景中播放聲音而不會出現任何故障。 – bluefalcon 2012-01-09 13:55:45

0

創建一個擴展Application標籤的Class文件,並開始在oncreate()方法中播放音樂。

public class MyApp extends Application { 
@Override 
public void onCreate() { 
     //start music in a service 
    } 
} 

從parentActivity,通過調用活動啓動其他活動:StartActivityForResult(),所以當孩子的活動結束後,parentActivity應在活動結束知道,它會導致到活動:: onActivityResult()。

在這種情況下,您可以在主要父活動中開始播放媒體,並且您可以在按下時結束音樂(服務)。

在所有活動中停止任何HomeButtonClicks並暫停/停止播放器(結束服務)。

+0

首先,處理主頁按鈕點擊只允許Launher應用程序。其次是在Application對象中播放音樂並在其他地方停止是不好的做法。 – 2012-03-01 09:54:07