9

मैं वर्तमान में स्क्रीन ओरिएंटेशन पोर्ट्रेट के साथ एक एप्लिकेशन पर काम कर रहा हूं, और मेरे पास एचटीएमएल 5 वीडियो है जिसके लिए पूर्णस्क्रीन समर्थन की आवश्यकता है। मैंने वेबव्यूम में एक वेबक्रॉम क्लाइंट जोड़ा, कुछ तरीकों को ओवरराइड किया। जब मैं पोर्ट्रेट अभिविन्यास पर चिपक जाता हूं तो सबकुछ ठीक काम कर रहा है, लेकिन जब मैं पूर्णस्क्रीन जाने पर लैंडस्केप पर अभिविन्यास स्विच करने का प्रयास करता हूं, तो मुझे एक क्रैश हो गया। कोई सुराग ?पूर्णस्क्रीन जाने पर एचटीएमएल 5 वीडियो क्रैश

Overrided तरीके:

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()); 
     } 

लॉग कहते हैं:

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) 

संपादित करें: मैं अपने प्रकट में इस लाइन है:

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

क्या आप इसे हल करने में मेरी मदद कर सकते हैं [समस्या] (http://stackoverflow.com/questions/14156411/loading-youtube-video-through-i-frame-in-android-webview) – edwin

+2

मेरे पास बिल्कुल वही है समस्या, लेकिन केवल गैलेक्सी एस 3 पर, जब आप वापस दबाते हैं (बाहर निकलने के लिए पूर्णस्क्रीन के लिए) – Pauland

+0

@ पॉलैंड क्या आपको इस समस्या का समाधान मिला? मुझे यह समस्या एस 3 में भी मिल रही है। क्या आप मेरी मदद कर सकते हैं? – Noundla

उत्तर

0

आप अभिविन्यास स्विच जब आवेदन इसे तेज घटना से शुरू करना स्वयं को रीसेट करता है। यह ऊंचाई और चौड़ाई और संबंधित सामान को बस सरल नहीं करता है। यही कारण है कि आप एक अपवाद अपवाद प्राप्त कर रहे हैं जो आपके द्वारा बनाए गए नियंत्रण में से एक है इस समय मौजूद नहीं है। शायद एचटीएमएल 5 देखें।

आपको क्या करना चाहिए वीडियो स्थिति का ट्रैक रखना और स्विच को अंतिम स्थिति से शुरू होने के अनुसार सभी नियंत्रणों को फिर से लोड करना है।

+0

मैं वर्तमान में गतिविधि स्तर पर प्रोग्रामेटिक रूप से अभिविन्यास परिवर्तनों को संभालने में कामयाब रहा हूं। इसलिए इसे नष्ट नहीं किया जाना चाहिए और –

+0

जैसा कि आपने ओनूर से कहा था, राज्य को बनाए रखने और कॉन्फ़िगरेशन परिवर्तनों को संभालने के बावजूद, अभिविन्यास परिवर्तन के दौरान सब कुछ नष्ट हो गया है। मुझे लगता है कि इस भाग को संभालने के लिए मुझे एक और ऐप स्रोत कोड में गोता लगाने की आवश्यकता होगी। मुझे बस डिफ़ॉल्ट वेब ब्राउज़र की तुलना में एक सरल उदाहरण मिलना है। –

+0

मैं सभी नियंत्रणों को फिर से लोड कैसे कर सकता हूं। क्या आप गठबंधन कर सकते हैं? –

0

आप अपनी गतिविधि को यह जोड़कर प्रकट से उन्मुखीकरण परिवर्तन से निपटने की कोशिश कर सकते हैं:

android:configChanges="orientation|screenLayout" 

मैं एक ही समस्या है के लिए इस्तेमाल किया, लेकिन यह मेरे लिए काम किया।

+0

ठीक है, आप उल्लेख करते हैं - मूल प्रश्न में नहीं - कि आप प्रोग्रामेटिक रूप से अभिविन्यास परिवर्तनों को संभालने में कामयाब रहे हैं, जो किसी भी मामले में काम नहीं करना चाहिए जबतक कि आप मैनिफेस्ट में उल्लिखित गुणों को सेट नहीं कर रहे हैं। तो शायद आप इस दृष्टिकोण को आजमा सकते हैं। – Gonan

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^