2012-09-07 20 views
5

मेरे पास एक वेबदृश्य है जिसमें इसके अंदर एचटीएमएल वीडियो है। मैं इस वीडियो फुलस्क्रीन दिखाने के लिए तो मैं एक VideoView उपयोग करने के लिए मेरी WebChromeClient की onShowCustomView ओवरराइड चाहते हैं। यह 2.3 में बहुत अच्छा काम करता है, हालांकि, 4.x onShowCustomView में कभी नहीं कहा जाता है। वीडियो अभी भी खेलेंगे, हालांकि, इसे प्लेव्यू और स्टॉप के लिए क्लिक करने के अलावा किसी भी नियंत्रण के बिना वेबव्यू के भीतर से खेला जाता है।एचटीएमएल 5 वीडियो पूर्णस्क्रीन दिखाएँ

इसके अलावा, मैं hardwareAccelerated है = "true"।

किसी भी विचार क्यों onShowCustomView कभी नहीं कहा जाता है?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    webView = (WebView) findViewById(R.id.webView); 

    webView.getSettings().setSupportZoom(true); 
    webView.getSettings().setLoadWithOverviewMode(true); 
    webView.getSettings().setUseWideViewPort(true); 
    webView.getSettings().setBuiltInZoomControls(true); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.getSettings().setDomStorageEnabled(true); 
    webView.getSettings().setPluginState(WebSettings.PluginState.ON); 
    webView.setWebViewClient(new WebViewClient()); 
    webView.setWebChromeClient(new MyChromeClient()); 

    webView.loadUrl(URL); 

} 

private class MyChromeClient extends WebChromeClient implements 
     OnCompletionListener, OnErrorListener, OnPreparedListener { 

    @Override 
    public void onShowCustomView(View view, CustomViewCallback callback) { 
     Log.d("ma", "onShowCustomView"); 
    } 

... 
+0

onShowCustomView (मेरे गरीब अंग्रेज़ी साथ खेद) 2.3.6 भी कहा जाता है नहीं किया जा रहा है, क्या हो सकता है मुद्दा हो? – Abhi

उत्तर

9

कुछ समय के लिए इसके साथ संघर्ष करने के बाद, मुझे अंततः कारण मिला। एंड्रॉइड 4.x में आपको 'वीडियो' टैग में एचटीएमएल 'नियंत्रण' विशेषता का उपयोग कर नियंत्रण दिखाना चाहिए। एक बार जब आप इन नियंत्रणों को दिखा रहे हैं, तो आप पूर्णस्क्रीन बटन पर क्लिक कर सकते हैं जिसे फिर 'onShowCustomView' पर कॉल किया जाएगा। चूंकि एम्बेडेड वीडियो 4.x में उपलब्ध है और आपके पास नियंत्रण के साथ पूर्णस्क्रीन पर जाने का विकल्प है, तोShowCustomView को स्वचालित रूप से प्ले पर नहीं कहा जाएगा। दुर्भाग्य से, एंड्रॉइड दस्तावेज में यह बहुत खराब दस्तावेज है।

+4

'ऑनशो कस्टम व्यू' नामक कोई अन्य तरीका नहीं है? मुझे 'VideoView' ऑब्जेक्ट के संदर्भ की आवश्यकता है, लेकिन 4.x के बाद मैं इसे – manelizzard

+2

प्राप्त करने में सक्षम नहीं हूं, भले ही आप ShowCustomView पर जाने का प्रबंधन करते हैं, ध्यान दें कि 4.x में जो गुजरता है वह अब वीडियो व्यू नहीं है बल्कि इसके बजाय SurfaceView – Bilthon

+2

ShowCustomView के कॉलिंग को बल देने के तरीके के बारे में कोई भी अपडेट? –

0

यह मेरे लिए काम करता है।

मैं Vimeo वीडियो के साथ वेब अनुप्रयोग बनाने में एक 'quirks समाधान' मिल गया। मैंने दो उपकरणों का परीक्षण किया। एक एंड्रॉइड 4.2.x संस्करण है, दूसरा 4.4.x संस्करण है। एक पूर्णस्क्रीन मोड में वीडियो चलाने में सक्षम है, दूसरा सक्षम नहीं है।

आधिकारिक दस्तावेज 'Migrating to WebView in Android 4.4' पढ़ने के बाद, मैंने पाया अलग दो उपकरणों में 'UserAgent के नाम देखते हैं कि।

इस उपयोगकर्ता के पास एक उपयोगकर्ता है।

Mozilla/5.0 (Linux; Android 4.4.2; SHV-E300L Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 

दूसरा यह है।

Mozilla/5.0 (Linux; Android 4.4.4; SHV-E370K Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 

मुझे लगता है कि क्रोम संस्करण पूर्ण स्क्रीन वीडियो बनाने समाधान है। इसलिए मैंने क्रोम संस्करण को 30.x में बदल दिया।

WebSettings s = mWebView.getSettings(); 
//Change UserAgent to play fullscreen vimeo's videos. 
String agent = s.getUserAgentString(); 
String p = "(Chrome/[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)"; 
Pattern pattern = Pattern.compile(p); 
Matcher matcher = pattern.matcher(agent); 
if(matcher.find()) { 
    agent = matcher.replaceFirst("Chrome/30.0.0.0"); 
} 
s.setUserAgentString(agent); 

ओह ~~ मैं सो कर सकते हैं ...

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