2011-07-17 23 views
3

我試圖展示一個視頻流,該應用程序在我的應用程序的一個活動中啓動,並跟隨用戶到應用程序中的其他活動,準備它。活動更改暫停一點點確定,但不應重新啓動。在一項活動中,一切正常,但在切換活動時,MediaPlayer似乎不想連接到新的SurfaceHolder。儘管音頻效果很好,但幾乎沒有任何障礙。讓一個正在運行的android.media.MediaPlayer保持應用程序中的活動

我一直在試圖通過SurfaceView的子類來完成這個任務,這個子類是用應用上下文初始化的。 (當我使用簡單的視圖(例如Button)時,跨活動重定位應用程序上下文視圖似乎很好,所以我認爲這不是問題。)在構造函數中,創建MediaPlayer對象,設置偵聽器和數據源(MP4通過HTTP流 - 是的,我證實我可以播放與MediaPlayer的正常使用),並致電prepareAsync。在我的SurfaceHolder.CallbacksurfaceCreated方法中,我呼叫setDisplay和(如果玩家已經完成準備)start。在surfaceDestroyed方法中,我稱爲pause。並且在準備回調中,如果表面已經被創建,我打電話給start。

我不知道該做什麼。有任何想法嗎?

+0

注:我也試過用本地視頻文件來減少可能出錯的事情數量。相同的結果。 – Emdot

+0

如果有人有一個MediaPlayer的例子,可以通過改變方向繼續播放視頻,這可能包括我需要做的工作。不幸的是,我一直無法找到任何這樣的在線。 – Emdot

+0

你可以分享你的一些代碼的幫助我也在同樣的麻煩,但無法得到其他活動的看法..這裏是我的跑步代碼鏈接:http://stackoverflow.com/questions/7739386/android-how -to-obtain-media-player-progress-bar-and-how-to-show-it-on-each-a –

回答

0

更簡單的方法是存儲方法中的位置的onPause():

public void onPause(){ 

    super.onPause(); 
    int pos = player.getCurrentPosition(); 
} 

,然後在新的活動電話:

player.seekTo(pos); 

player.start(); 

但是isn't非常有效的。在離開活動時存儲視頻的狀態以及在返回時恢復視頻會很好,但我無法在網上找到任何此類內容。

+0

暫停和恢復對我來說工作正常,因爲我在整個活動中保持單個實例。問題在於將其重新連接到表面。 – Emdot

相關問題