에궁 무식이 죄라구 어떻게 찾는 이슈들 마다 이렇타할 구체적인 정보가 없네요...ㅡㅜ....
다름이 아니라 VideoView를 사용하다보면
"Cannot play video"라는 팝업이 뜨고, 그 팝업에는 "Sorry, this video cannot be played."라는 메시지가 표시 될 때가 있습니다.
뭐 쉽게 말해서 영상물을 열지 못했다는 다이얼로그죠....
이러한 Error에 대해 VideoView 자체적인 다이얼로그를 사용하지 않고 그때 바로 다른 주소로 영상물울 재생시키고자 합니다.
onErrorListener에서 체크를 해보면 에러는 확실히 체크가 됩니다.
하지만 그 에러가 체크되기 전에 앞서 언급한 다이얼로그가 먼저 UI 상에 표시가 되어버리네요...
만약 이러한 녀석을 사용하지 않으려 한다면 어떻게 해야 할까요?
VideoView를 사용하지 말고 MediaPlayer 자체를 다시 만들어야 할까요?....ㅡㅜ..
무지한 제게 많은 분들의 조언 부탁드리겠습니다..ㅡㅜ...
http://stackoverflow.com/questions/7194609/android-catch-video-error-before-error-popup-appears
위 링크는 제가 하고자 하는 이슈와 동일한 외국 개발자분의 글입니다.
ps : 혹시나 해서 추가로 남겨 봅니다.
VideoView 자체 내에서 Error 발생 시 Dialog를 띄워 주는 경우라면
방법을 바꿔 해당 확장자가 VideoView에서 재생이 가능한지 확인 할 수 있는 메소드가 있을까요?
확장자가 동일해도 내장된 코덱이 단말에서 지원하지 못하다보니, 확장자로는 구분이 어렵습니다.
지원하는 코덱이더라도 단말에 따라 음악 채널이 5.1채널 같이 2채널 보다 높다면 지원 안될수도 있고요.
단지 미디어 스캐너에서 이미지 추출하는 것도, 미디얼를 재생하여 한 프레임을 뽑는 것이니, 미디어 DB에서 썸네일이 있으면,
지원된다고 생각해도 됩니다.(단 채널이나 오디오 코덱 문제로 단말에 따라 사운드는 안날수 있습니다.)
따라서 VideoView를 안드로이드 소스를 참조하여 재구성하는 것을 권장해드립니다
이렇게 하시면 에러 dialog 안나오고, 원하는대로 처리가능합니다.@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
vView = (VideoView) findViewById(R.id.videoView1);
vSource = "android.resource://com.domain.android/"
+ R.raw.introductionportrait;
vView.setVideoURI(Uri.parse(vSource));
vView.setOnErrorListener(mOnErrorListener);
vView.requestFocus();
vView.start();
}
private OnErrorListener mOnErrorListener = new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
// Your code goes here
return true;
}
};
출처
http://stackoverflow.com/questions/6742002/how-to-catch-sorry-this-video-cannot-be-played-error-on-videoview




요건.. videoview 이놈 자체에 있어요.. videoview 이놈은 안드로이드 소스에 포함되있구요..
어플단에서 수정은 못하고.. 안드로이드 소스에서 수정해야합니다..