9

Şu anda ekran yönelim resimli bir uygulama üzerinde çalışıyorum ve tam ekran desteğine ihtiyaç duyan html 5 videom var. Bir WebChromeClient web görünümüne ekledim, birkaç yöntemi geçersiz kıldım. Her şey, dikey yönelime bağlı kaldığımda iyi çalışıyor, ancak tam ekrana giderken yönlendirmeye yatay geçiş yapmaya çalıştığımda, bir kaza geçirdim. Bir ipucu ?HTML 5 video çökmesi tam ekrana geçerken

overrided yöntemleri:

public void onShowCustomView(View view, CustomViewCallback callback) { 
    super.onShowCustomView(view, callback); 
    if (mCustomViewContainer != null) { 
     callback.onCustomViewHidden(); 
     return; 
    } 
    if(interfazWeb==null) 
     interfazWeb = (FragTabActivity) getActivity(); 
     if (view instanceof FrameLayout) { 
      mCustomViewContainer = (FrameLayout) view; 
      mCustomViewCallback = callback; 
      interfazWeb.getCustomContentView().setVisibility(View.INVISIBLE); 
      interfazWeb.addContentView(mCustomViewContainer, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, Gravity.CENTER)); 
      interfazWeb.setBackDelegate(new BackDelegate(){ 

       public boolean shouldOverrideBackButton() { 
        if(mCustomViewCallback!=null){//first calling onHideCustomView() 
         onHideCustomView(); 
         return true; 
        } 
        return false; 
       } 

      }); 
      mCustomViewContainer.bringToFront(); 
      //interfazWeb.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     } 
    } 

    @Override 
    public void onHideCustomView() { 
     // TODO Auto-generated method stub 
      if(interfazWeb==null) 
       interfazWeb = (FragTabActivity) getActivity(); 
      if(mCustomViewContainer!=null){ 
       ViewGroup parent = (ViewGroup) interfazWeb.getCustomContentView().getParent(); 
       if(parent!=null){ 
        parent.removeView(mCustomViewContainer); 
        interfazWeb.getCustomContentView().setVisibility(View.VISIBLE); 
       } 
      } 
      if(mCustomViewCallback!=null){ 
       mCustomViewCallback.onCustomViewHidden(); 
       mCustomViewCallback = null; 
      } 
      //interfazWeb.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } 

     @Override 
     public Bitmap getDefaultVideoPoster() { 
      // TODO Auto-generated method stub 
      return Bitmap.createBitmap(1, 1, Config.ARGB_8888); 
     } 

     @Override 
     public View getVideoLoadingProgressView() { 
      // TODO Auto-generated method stub 
      return new ProgressBar((Context) getActivity()); 
     } 

Günlüğü diyor ki:

10-31 11:09:36.336: E/AndroidRuntime(8098): java.lang.NullPointerException 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at android.webkit.HTML5VideoView.isPlaying(HTML5VideoView.java:122) 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at android.webkit.HTML5VideoViewProxy$VideoPlayer.isPlaying(HTML5VideoViewProxy.java:253) 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at android.webkit.HTML5VideoViewProxy.handleMessage(HTML5VideoViewProxy.java:402) 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at android.os.Looper.loop(Looper.java:137) 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at android.app.ActivityThread.main(ActivityThread.java:4758) 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at java.lang.reflect.Method.invoke(Method.java:511) 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
10-31 11:09:36.336: E/AndroidRuntime(8098):  at dalvik.system.NativeStart.main(Native Method) 

DÜZENLEME: benim manifest bu satırı vardır:

android:configChanges="keyboardHidden|orientation|locale|screenLayout" 
+0

Bu sorunu çözmek için bana yardımcı olabilir misiniz? [Sorun] (http://stackoverflow.com/questions/14156411/loading-youtube-video-through-i-frame-in-android-webview) – edwin

+2

Tam olarak aynı var sorun, ama sadece galaksinin S3 üzerinde, geri basıldığında (tam ekran için) – Pauland

+0

@Pauland Bu sorun için çözüm buldunuz mu? Bu sorunu S3'te de alıyorum. Lütfen bana yardım edebilir misin? – Noundla

cevap

0

yönlendirmeyi uygulamasını açtığınızda Oncreate olayı ile başlayarak kendini sıfırlar. Sadece yükseklik ve genişlik ile ilgili şeyleri basitçe değiştirmez. Bu yüzden null istisnası alıyorsunuz, yarattığınız kontrollerden biri bu sefer mevcut değil. Muhtemelen HTML5View.

Yapmanız gereken, video konumunu takip etmektir ve anahtarlama durumunda tüm kontrolleri son konumdan başlayarak yeniden yüklemektir.

android:configChanges="orientation|screenLayout" 

Aynı sorun için kullanılan ama bu benim için çalıştı:

+0

Şu anda yönlendirme değişikliklerini program düzeyinde, Etkinlik seviyesinde kullanıyorum. Yani imha edilmeli ve yeniden oluşturulmamalı. –

+0

Onur dediğiniz gibi, yön değişikliği sırasında, durumu koruyarak ve yapılandırma değişikliklerini ele geçirmeme rağmen, her şey yok oluyor. Bu bölümü nasıl ele aldıklarını öğrenmek için başka bir uygulama kaynak koduna dalmak zorunda kalacağım. Sadece varsayılan web tarayıcısından daha basit bir örnek bulmayı umuyorum. –

+0

Tüm denetimleri nasıl geri yükleyebilirim? elba olabilir misin –

0

Sen Aktivite Bu ekleyerek Manifest gelen oryantasyon değişiklikleri ele deneyebilirsiniz.

+0

Evet, orijinal soruda değil - Manifest'te bahsettiğim özellikleri ayarlamadığınız sürece hiçbir durumda çalışmayan yönlendirme değişikliklerini programlı olarak kullandığınızdan bahsediyorsunuz. Yani belki bu yaklaşımı deneyebilirsiniz. – Gonan