Notice
Recent Posts
Recent Comments
Link
투케이2K
583. (Android/Java) [유틸 파일] 안드로이드 : videoPlayView : 비디오 재생 팝업창 호출 메소드 본문
Android
583. (Android/Java) [유틸 파일] 안드로이드 : videoPlayView : 비디오 재생 팝업창 호출 메소드
투케이2K 2023. 6. 19. 22:11[개발 환경 설정]
개발 툴 : AndroidStudio
[소스 코드]
// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [VOID] : [비디오 재생 팝업창 호출 처리 메소드]
// -----------------------------------------------------------------------------------------
// TODO [호출 방법 소스 코드]
// -----------------------------------------------------------------------------------------
/*
try {
// [팝업창 활성 수행]
C_Ui_View.videoPlayView(A_Intro.this, "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4", "알림", "", "확인");
}
catch (Exception e){
e.printStackTrace();
}
*/
// -----------------------------------------------------------------------------------------
public static void videoPlayView(Context mContext, String url, String title, String message, String ok){
try {
// ===============================================================
S_Log._D_("비디오 재생 팝업창 호출 수행 실시", new String[]{
"URL :: " + String.valueOf(url)
});
// ===============================================================
// [UI 생성 실시]
final VideoView videoView = new VideoView( mContext );
videoView.setPadding(5,5,5,5);
// [URL 데이터 널 체크 수행]
if (C_Util.stringNotNull(url) == true){ // [널 아님]
// TODO [로딩 프로그레스 동작]
startLoadingAlert(mContext, S_FinalMsg.AL_TITLE, "비디오 재생 준비 중 입니다 .. 잠시만 기다려 주세요.", "");
// TODO [비디오 재생할 URL 지정]
videoView.setVideoURI(Uri.parse(url));
// TODO [비디오 재생 준비 완료 시]
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
try {
S_Log._D_("비디오 재생 준비 완료", null);
// TODO [비디오 재생 시작]
videoView.start();
// TODO [로딩 프로그레스 종료]
stopLoadingAlert(mContext);
// TODO [토스트 알림]
C_Ui_View.toastShortNormal(mContext, "비디오 재생을 수행합니다.");
}
catch (Exception e){
e.printStackTrace();
}
}
});
// TODO [비디오 재생 완료 시]
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
S_Log._W_("비디오 영상 재생 완료", null);
// TODO [로딩 프로그레스 종료]
stopLoadingAlert(mContext);
//TODO [Alert 팝업창 알림 실시]
C_Ui_View.toastShortNormal(mContext, "비디오 영상 재생이 완료 되었습니다. ^0^");
}
});
// TODO [비디오 재생에 문제가 발생 시]
videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
S_Log._E_("비디오 재생 문제 발생", null);
// TODO [로딩 프로그레스 종료]
stopLoadingAlert(mContext);
//TODO [Alert 팝업창 알림 실시]
C_Ui_View.toastShortError(mContext, "비디오 영상 재생 중 문제가 발생했습니다. ㅠ0ㅠ");
return false;
}
});
// TODO [팝업창 생성 실시]
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
if (mContext != null){
// [AlertDialog 팝업창 생성]
new AlertDialog.Builder(mContext)
.setTitle(title) //[팝업창 타이틀 지정]
//.setIcon(R.drawable.app_icon) //[팝업창 아이콘 지정]
.setMessage(String.valueOf(message)) //[팝업창 내용 지정]
.setView( videoView )
.setCancelable(false) //[외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정]
.setPositiveButton(ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
// -----------------------------------------
// TODO [확인 버튼 클릭 이벤트 처리]
// -----------------------------------------
S_Log._D_("비디오 뷰 팝업창 호출 [확인] 클릭", null);
// -----------------------------------------
try {
// TODO [비디오 정지 실시]
if(videoView != null){
videoView.stopPlayback();
}
}
catch (Exception e){
e.printStackTrace();
}
}
})
.show();
}
}
}, 0);
}
else { // [널 임]
// TODO [로딩 프로그레스 종료]
stopLoadingAlert(mContext);
// [에러 팝업창 표시]
String error[] = { "설 명 :: URL 주소가 올바르지 않습니다. 주소를 다시 확인해 주세요.", "URL :: " + String.valueOf(url) };
C_Ui_View.errorShowListView(mContext, false, title, error, S_FinalMsg.AL_OK, "");
}
} catch (final Exception e){
e.printStackTrace();
// TODO [로딩 프로그레스 종료]
stopLoadingAlert(mContext);
}
}
반응형
'Android' 카테고리의 다른 글
Comments