본문 바로가기

Programming/과거포스팅

Android WebView 동영상 (WebView Movie)

안드로이드 웹뷰에서 동영상 재생하는 방법을 알아보자..

생각외로 간단하다. 웹뷰 재생을 위해선 WebChromeClient, WebViewClient를 이용해야 하는데

이중 하나만 사용해서는 동영상 재생이 불가능하다.. 아니 크롬 클라이언트를 이용하면 동영상 재생은 가능하지만 

새로운 창이 뜨면서 웹뷰가 아닌 크롬에서 실행이 된다. 그래서 아래 밑줄 친 부분을 추가해야한다. 밑에 New로 선언한 부분은 단순히 

WebChromeClient, WebViewClient 이녀석들을 상속받은 클래스를 생성했을 뿐이니 new WebChromeClient 이런식으로 선언해줘도 상관없다.

레이아웃도 복잡한건 전혀 없으니 생략하겠다. 단순히 웹뷰에 id만 주면 된다.
@SuppressLint("SetJavaScriptEnabled")
	@SuppressWarnings("deprecation")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Logger.trace(Log.DEBUG, "onCreate");
		
		webView = (WebView)findViewById(R.id.webView);
		webView.getSettings().setJavaScriptEnabled(true);
		webView.getSettings().setPluginState(PluginState.ON);
		webView.getSettings().setPluginsEnabled(true);
		webView.getSettings().setSupportMultipleWindows(true);
		
	    String url = "url";
	    
	    webView.loadUrl(url);
	    
	   	webView.setWebChromeClient(new ChromeClient());
		webView.setWebViewClient(new WebClient());

만약 동영상 재생중 페이지 이동이나 종료가 될경우 미디어 플레이어는 계속 재생이 된다.
그러므로 각각의 콜백함수에서 다음 메서드를 호출하면 미디어 플레이어가 종료가 된다.
생각외로 간단한 소스지만 인터넷에 정보가 존재하지 않았다. 헤메는 사람들을 위해서 조금이라도 도움이 되었으면 좋겠다.
이 소스를 사용하면 2.대 버전의 안드로이드에서도 재생이 가능하다.

아래 소스의 문제점이 생겼다. 중지는 되는데 로그에 버퍼링 어쩌고가 찍히는거였다. 스트리밍을 완전히 해제하는 방법을 알아봐야겠다.
public void stopMediaPlayer() {
	MediaPlayer player = new MediaPlayer();
		
	if (player.isPlaying()) {
		player.stop();
	}
}

혹 위와 같이 했는데도 소리만 나오고 영상이 재생이 되지 않는다면 onCreate에 아래 코드를 추가해야 한다.
GPU를 가속 시키는 퍼미션으로 SDK 11이상(3.0)에서만 지원이 된다.  테스트 해본 폰은 갤럭시S3, Note 이고 이 이상인 폰들은 테스트 해보진 않았지만 다 지원 될꺼라 예상해본다..
if(android.os.Build.VERSION.SDK_INT >= 11)
{
	getWindow().addFlags(16777216);
}

'Programming > 과거포스팅' 카테고리의 다른 글

리눅스 NGINX 설치  (0) 2013.05.07
JUnit  (0) 2013.05.03
Jquery CheckBox 전체 선택 해제.  (0) 2013.04.25
centOS Mail Server Setup  (0) 2013.04.19
JAVA SHA1 암호화 기법  (0) 2013.04.17