2012-09-16 73 views
6

我有一個mediaplayer實例在後臺服務中運行。在我的主要活動中,我有一個表面視圖。如何從android媒體播放器中分離/釋放surfaceview

當活動啓動並創建surfaceview時,我將綁定到服務並將mediaplayer的顯示錶面設置爲我主要活動的surfaceview。我這樣做mPlayer.setSurface(sv.getHolder().getSurface());

視頻顯示,一切正常,迄今爲止。當我的表面視圖被破壞時,在surfaceDestroyed()回調中,我嘗試通過調用mPlayer.setSurface(null);來從mediaplayer分離表面視圖。問題是,當我這樣做時,我從mediaplayer(錯誤代碼1)得到一個錯誤。

所以我的問題是,我設置了一個MediaPlayer對象後,我設置了mPlayer.setSurface(sv.getHolder().getSurface());的surfaceview有沒有辦法釋放或分離那個surfaceview而不停止或重新初始化mediaplayer對象?

在此先感謝。

+0

你試圖從媒體播放器中移除表面? – artkoenig

+0

@Artjom我想要做的是這樣的:如果用戶關閉屏幕或離開我的主要活動導航,我想繼續播放背景中視頻的音頻部分。如果用戶重新進入我的活動,並且如果剪輯在我的後臺服務中播放,我想自動在我的SurfaceView中顯示視頻。有沒有什麼辦法可以做到這一點,而無需停止或重置MediaPlayer對象? – ilikekiwis

+0

@ilikekiwis我想在這裏做同樣的事情。你有沒有想到後者? – Wesley

回答

0

您可以避免在用戶離開時暫停播放。這將有助於您繼續播放。但還有另一個問題:當你的活動/片段從窗口SurfaceView分離出來時就會被銷燬。這意味着當用戶返回到您的應用時,您必須重新初始化媒體播放器,並重新創建SurfaceView實例。