>  기사  >  웹 프론트엔드  >  Android WebView가 HTML5 비디오의 전체 화면 재생을 지원하도록 만드는 방법(그림)

Android WebView가 HTML5 비디오의 전체 화면 재생을 지원하도록 만드는 방법(그림)

黄舟
黄舟원래의
2017-05-21 15:21:233619검색

1) AndroidManifest.xml 파일에는 HardwareAccelerate를 사용해야 한다고 명시되어 있으며, 이는 Activity 수준으로 세분화할 수 있습니다. View가 필요하지 않은 경우 가속을 사용하지 않도록 선언할 수 있지만 에서 수행해야 합니다. 코드는 다음과 같습니다.

a. 전체 애플리케이션을 가속화해야 한다고 선언하려는 경우:

         < application
 ... android:hardwareAccelerated ="true">

b. 활동에서 선언하려는 경우:


                <activity
 ... android:hardwareAccelerated="true" >,
 还可以更细化到Window, getWindow.setFlags(  WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);                               
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,

c. 애플리케이션이나 활동에서 하드웨어 가속이 필요하다고 선언했지만 어떤 이유로(예: 절전? ), 일부 보기에는 하드웨어 가속이 필요하지 않습니다.

                                                                                           >                   

setLayerType(보기. LAYER_TYPE_SOFTWARE, null); 2) 꽤 이상하다고 할 수 있습니다. AndroidManifest.xml 파일 -sdk> 태그에 bfbb500b983fbda4924ff941d541f424API Level 11)부터 2D 렌더링 가속이 가능해야 하는데, targetSDK를 5로 설정해도 사용할 수 있는데, 이 태그를 작성하지 않으면 동작하지 않습니다.

일반적으로 위 작업이 완료된 후 비디오 태그를 사용하여 전체 화면을 지원하려면 다음과 같은 작업을 조금 더 수행해야 합니다. 🎜>

1) Webview에 Web

Chr

omeClient

개체

를 제공합니다. 이 WebChromeClient 개체는 onShowCustomView 및 onHideCustom

View 메서드를 구현해야 합니다. :

    @Override
               public void onShowCustomView(View
 view, CustomViewCallback callback) {
                      if (myCallback != null)
 {
                            myCallback.onCustomViewHidden();
                            myCallback = null ;
                            return;
                     }
                     
                      long id
 = Thread.currentThread().getId();
                     WrtLog. v("WidgetChromeClient", "rong
 debug in showCustomView Ex: " + id);
                     
                     ViewGroup parent = (ViewGroup) mWebView.getParent();
                     String s = parent.getClass().getName();
                     WrtLog. v("WidgetChromeClient", "rong
 debug Ex: " + s);
                     parent.removeView( mWebView);
                     parent.addView(view);
                      myView =
 view;
                      myCallback =
 callback;
                      chromeClient = this ;
              }
               private View myView = null;
               private CustomViewCallback myCallback = null;
              
              
               public void onHideCustomView()
 {
                     
                      long id
 = Thread.currentThread().getId();
                     WrtLog. v("WidgetChromeClient", "rong
 debug in hideCustom Ex: " + id);
                     
                     
                      if (myView != null)
 {
                           
                            if (myCallback != null)
 {
                                   myCallback.onCustomViewHidden();
                                   myCallback = null ;
                           }
                           
                           ViewGroup parent = (ViewGroup) myView.getParent();
                           parent.removeView( myView);
                           parent.addView( mWebView);
                           myView = null;
                     }
               }
좋아요, 이 작성 방법은 인터넷의 여러 작성 방법과 다릅니다. 인터넷에 있는 대부분의 예는 onShowCustomView 메소드로 수신된 뷰가 VideoView라는 것입니다. 여기에는 HTML5

VideoFullScreen의 VideoSurfaceView 하위 클래스를 찾을 수 없으며 이 하위 클래스는 여전히 외부에서 액세스할 수 없는 비공개 하위 클래스입니다. android.jar에는 HTML5VideoFullScreen 클래스가 없습니다. 애플리케이션에서 이 클래스에 액세스하려면 /plat

forms//data/layoutlib.jar 패키지를 buildpath 이며, android-14, 즉 android 4.0 이후부터만 가능합니다. 즉, 인터넷에서 언급한 방법은 android 3.0 시대에는 사용할 수 있지만 android 4.0 이후에는 사용할 수 없습니다. .0.3.  

사실 버전에 상관없이 이 코드의 일반적인 의미는 onShowCustomView 메소드에서는 획득한 뷰를 현재 Activity 상단에 배치하고, onHideCustomView에서는 이전 보기 또는 삭제, 원본 웹 보기를 다시 넣고 재생을 종료합니다. 그렇지 않으면 MediaPlayer에 보고됩니다. IllegalStatusException이며 여전히 Native 방식이므로 전혀 디버깅할 수 없습니다.

다운로드하고 eclipse를 사용하여 프로젝트로 가져온 다음 샘플을 추가할 수 있습니다video sdcard의 루트 디렉토리에 넣으세요. 시스템 관점에서는 /mnt/sdcard입니다.

효과는 아래와 같습니다.

전체 화면 전:

 


전체 화면 후:

>

위 내용은 Android WebView가 HTML5 비디오의 전체 화면 재생을 지원하도록 만드는 방법(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.