在Android中获取videoView的mediaPlayer
是否有可能获得videoView正在使用的mediaPlayer实例的引用,最好是在其内部?如果是,怎么做在Android中获取videoView的mediaPlayer,android,android-mediaplayer,android-videoview,Android,Android Mediaplayer,Android Videoview,是否有可能获得videoView正在使用的mediaPlayer实例的引用,最好是在其内部?如果是,怎么做 由于videoView没有mediaPlayer那么多的侦听器,我希望能够访问mediaPlayer以获得额外的控制和更好的事件处理。您可以从videoView进行侦听 VideoView mVideoView=new VideoView(); mVideoView.setOnPreparedListener( new MediaPlayer.OnPreparedListener() {
由于videoView没有mediaPlayer那么多的侦听器,我希望能够访问mediaPlayer以获得额外的控制和更好的事件处理。您可以从videoView进行侦听
VideoView mVideoView=new VideoView();
mVideoView.setOnPreparedListener( new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer pMp) {
//use a global variable to get the object
}
});
或者,如果您只对媒体播放器事件感兴趣,您可以使用其中任何一个,这些都是在VideoView上实现的,基本上都是媒体播放器事件
void setOnCompletionListener(MediaPlayer.OnCompletionListener l)
void setOnErrorListener(MediaPlayer.OnErrorListener l)
void setOnInfoListener(MediaPlayer.OnInfoListener l)
void setOnPreparedListener(MediaPlayer.OnPreparedListener l)
所有这些函数也将给出一个媒体播放器实例 你可能可以通过反射来完成。反射太混乱,太危险了。是否可以扩展videoView并将mediaPlayer放在那里?尽管我很久以前就提出了这个问题,但我记得我想要的是:大量的控制和在此视图中所有事件的通知:播放状态事件(暂停、启动、停止、搜索)、错误事件、缓冲状态等。。。mediaPlayer拥有所有这些功能(虽然不确定它们的工作情况和方式),但videoView只有一些。videoView上的事件(例如SetOnInfo Listener(mediaPlayer.OnInfo Listener l))只能从API级别17获得,所以如果我想支持较低的API级别,该怎么办?您可以设置找到的mediaPlayer对象的SetOnInfo Listener。可用>API 3。
setOnPreparedListener()
不工作,onPrepared()
从未调用过@nburk确保您没有在代码的更深处调用setOnPreparedListener()
。如果你有第二个电话,那么第二个电话将取代这个电话。(希望这有帮助)