Android: 如何获取Media Player的报错并使用?
Android: How get error of Media Player and use it?
我使用 SurfaceView
作为视频播放器
如果在流中未加载视频,在 logcat
中查看错误 info(701,0)
如何获得 info(701,0)
并使用它?
Sample :
if(error == 701){
....
}
是的,您可以对 VideoView 使用 setOnErrorListener(..)
并在那里处理错误。这是一个例子:
mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
switch(what){
case MediaPlayer.MEDIA_ERROR_UNKNOWN:
// handle MEDIA_ERROR_UNKNOWN, optionally handle extras
handleExtras(extra);
break;
case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
// handle MEDIA_ERROR_SERVER_DIED, optionally handle extras
handleExtras(extra);
break;
}
return true;
}
});
...
private void handleExtras(int extra){
switch(extra){
case MediaPlayer.MEDIA_ERROR_IO:
// handle MEDIA_ERROR_IO
break;
case MediaPlayer.MEDIA_ERROR_MALFORMED:
// handle MEDIA_ERROR_MALFORMED
break;
case MediaPlayer.MEDIA_ERROR_UNSUPPORTED:
// handle MEDIA_ERROR_UNSPECIFIED
break;
case MediaPlayer.MEDIA_ERROR_TIMED_OUT:
// handle MEDIA_ERROR_TIMED_OUT
break;
}
}
编辑:701 是信息而不是错误,因此要处理信息,您需要附加信息侦听器 setInfoListener()
并遵循与错误侦听器相同的模式。这是一个例子:
mVideoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
switch(what){
case MediaPlayer.MEDIA_INFO_BUFFERING_START:
// handle info 701 here, MEDIA_INFO_BUFFERING_START corresponds to 701
break;
}
return true;
}
});
请注意,这需要至少 API 17。以及对您要查找的内容的引用:
https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_BUFFERING_START
希望这有用。
我使用 SurfaceView
作为视频播放器
如果在流中未加载视频,在 logcat
中查看错误 info(701,0)
如何获得 info(701,0)
并使用它?
Sample :
if(error == 701){
....
}
是的,您可以对 VideoView 使用 setOnErrorListener(..)
并在那里处理错误。这是一个例子:
mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
switch(what){
case MediaPlayer.MEDIA_ERROR_UNKNOWN:
// handle MEDIA_ERROR_UNKNOWN, optionally handle extras
handleExtras(extra);
break;
case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
// handle MEDIA_ERROR_SERVER_DIED, optionally handle extras
handleExtras(extra);
break;
}
return true;
}
});
...
private void handleExtras(int extra){
switch(extra){
case MediaPlayer.MEDIA_ERROR_IO:
// handle MEDIA_ERROR_IO
break;
case MediaPlayer.MEDIA_ERROR_MALFORMED:
// handle MEDIA_ERROR_MALFORMED
break;
case MediaPlayer.MEDIA_ERROR_UNSUPPORTED:
// handle MEDIA_ERROR_UNSPECIFIED
break;
case MediaPlayer.MEDIA_ERROR_TIMED_OUT:
// handle MEDIA_ERROR_TIMED_OUT
break;
}
}
编辑:701 是信息而不是错误,因此要处理信息,您需要附加信息侦听器 setInfoListener()
并遵循与错误侦听器相同的模式。这是一个例子:
mVideoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
switch(what){
case MediaPlayer.MEDIA_INFO_BUFFERING_START:
// handle info 701 here, MEDIA_INFO_BUFFERING_START corresponds to 701
break;
}
return true;
}
});
请注意,这需要至少 API 17。以及对您要查找的内容的引用:
https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_BUFFERING_START
希望这有用。