2012-04-24 79 views
-1

我試圖在Android應用程序中播放背景聲音。我正在使用一個獨立的類作爲Soundmanager。在我的第一個活動中,我開始播放聲音,並希望通過其他兩項活動進行播放。而在我的第三堂課,我希望它停下來,另一個聲音應該播放。 但即時通訊有問題停止聲音,不知道爲什麼。我想這與我在Soundmanager類中使用Context類有關。不能在Android中使用MediaPlayer播放其他Activity中的聲音

有誰知道如何使聲音停止?我將鏈接我的Soundmanager類,因爲這是唯一與我相關的內容。我很新的編程,所以請溫柔。

SoundManager類類 http://codepad.org/KJi6DZN6

回答

2

使所有的方法和類變量在SoundManager中都是靜態的(並且爲需要的方法傳入Context)。

我懷疑你可能是在每個活動中創建了一個新的SoundManager實例,這會創建多個SoundManager實例。使其靜態可訪問將意味着所有活動正在修改相同的變量。

另一個說明,我不認爲你必須有一個活動Context,所以請嘗試通過context.getApplicationContext()傳遞你的應用程序的上下文。這將避免將MediaPlayer對象綁定到任何特定的活動。

+0

這對靜態工作很好!謝謝!但我沒有得到context.getApplicationContext()的工作,但我會嘗試閱讀更多關於它。 – andreasolsson 2012-04-24 23:31:49

+0

很好聽。它很可能只適用於Activity的'Context'。雖然值得嘗試。 – 2012-04-24 23:42:49

0

只是一個猜測,因爲我不知道你是如何共享您的SoundManager類對象:

也許你創建的每一個應該活動的SoundManager類類的新實例用它。 (即每個人中有new Soundmanager(context)或在停止活動中至少有另外一個人)。

+0

是的,在每個活動im使用SoundManager我有SoundManager sm = new SoundManager(this); 在我的第一個活動中,我打電話給方法sm.loopSound(); ,我希望它停止在我的第三個活動中使用sm.stopSound()和sm.release();但它不起作用。 – andreasolsson 2012-04-24 19:37:53