2011-07-17 82 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

相关问题