काम नहीं कर रहा है मैं वेबव्यू के अंदर यूट्यूब एम्बेड वीडियो लिंक (उदा: https://www.youtube.com/embed/dQw4w9WgXcQ) पर एक पूर्णस्क्रीन बटन काम करने के लिए वेबक्रॉम क्लाइंट के उप-वर्ग को कार्यान्वित करने का प्रयास कर रहा हूं।वेबव्यू के अंदर वीडियो का पूर्णस्क्रीन बटन
VideoWebChromeClient:
public class VideoWebChromeClient extends WebChromeClient {
private boolean isVideoFullscreen = false;
private View activityNonVideoView;
private ViewGroup activityVideoView;
private View videoViewContainer;
private CustomViewCallback videoCallback;
private Window videoWindow;
public VideoWebChromeClient(View activityNonVideoView, ViewGroup activityVideoView, Window window) {
this.activityNonVideoView = activityNonVideoView;
this.activityVideoView = activityVideoView;
this.videoWindow = window;
}
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
Log.w("ENTER FULLSCREEN");
videoCallback = callback;
videoViewContainer = view;
videoWindow.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
activityNonVideoView.setVisibility(View.GONE);
activityVideoView.addView(videoViewContainer, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
activityVideoView.setVisibility(View.VISIBLE);
isVideoFullscreen = true;
}
@Override
public void onHideCustomView() {
if (!isVideoFullscreen) {
return;
}
Log.w("EXIT FULLSCREEN");
activityVideoView.setVisibility(View.GONE);
activityVideoView.removeView(videoViewContainer);
activityNonVideoView.setVisibility(View.VISIBLE);
videoWindow.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
videoViewContainer = null;
videoCallback.onCustomViewHidden();
isVideoFullscreen = false;
}
public boolean onBackPressed() {
onHideCustomView();
return isVideoFullscreen;
}
}
WebViewActivity
public class WebViewActivity extends BaseActivity {
public static final String WEB_VIEW_URL_EXTRA = "URL";
private boolean loadedFirstURL = true;
private VideoWebChromeClient mWebChromeClient;
@Bind(webview)
WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(provideLayoutId());
String url = (String) getIntent().getSerializableExtra(WEB_VIEW_URL_EXTRA);
// Check if URL is YouTube/Vimeo
if (RegexHelper.isVideoURL(url)){
// Allow Fullscreen
final View defaultLayout = findViewById(R.id.defaultLayout);
final View fullscreenLayout = findViewById(R.id.fullscreenLayout);
mWebChromeClient = new VideoWebChromeClient(defaultLayout, (ViewGroup) fullscreenLayout, getWindow());
mWebView.setWebChromeClient(mWebChromeClient);
// Block external links
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (loadedFirstURL) {
loadedFirstURL = false;
return false;
}
return true;
}
});
}
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(url);
}
@Override
public void onBackPressed() {
if (!mWebChromeClient.onBackPressed())
{
if (mWebView.canGoBack()) {
mWebView.goBack();
}
else {
super.onBackPressed();
}
}
}
}
यह सही ढंग से पर किटकैट ख काम करता है
मैं मूल रूप से सरल this repo, यहाँ कुछ स्निपेट होते हैं, पर नॉट (मेरे पास परीक्षण करने के लिए केवल दो डिवाइस हैं): जब मैं पूर्णस्क्रीन बटन टैप करता हूं तो कभी-कभी पूर्णस्क्रीन में जाता है, लेकिन ज्यादातर बार यह "चमकता है" और पूर्ण-स्क्रीन नहीं रहता है।
और तब, जब यह पूर्ण स्क्रीन मोड में वास्तव में है, पूर्णस्क्रीन से बाहर आने के लिए बटन काम नहीं करता है (onHideCustomView
सब पर नहीं बुलाया जाता है)
आप देख सकते हैं कि मैं लॉग रख दिया और देखा है कि जब "फ्लैश" होता है, onHideCustomView
वास्तव में onShowCustomView
("ENTER FULLSCREEN"
के तुरंत बाद "EXIT FULLSCREEN"
) के बाद सही कहा जाता है, मुझे समझ में नहीं आता क्यों।
धन्यवाद एक बहुत करता है, तो किसी को भी एक समाधान
बस मेरे अनुभव और शोध के आधार पर एक राय: यूट्यूब वीडियो से निपटने के लिए वेबव्यू भूल जाएं: उचित यूट्यूब एपीआई पर डालने से आप हर हफ्ते के आश्चर्यजनक अपडेट को मुक्त कर देंगे। – statosdotcom
@statosdotcom हाँ मुझे यह पसंद है कि मैं इसे सिर्फ YouTube ऐप में खोल सकता हूं लेकिन मैं लक्ष्य नहीं कर सकता क्योंकि लक्ष्य केवल एक वीडियो प्रदर्शित करना है और दूसरों को सुझाव देने से बचाना है। – CyrilFind
हो सकता है कि एपीआई आपके लिए कुछ कॉन्फ़िगरेशन प्रदान कर सके, कुछ ठीक ट्यूनिंग की अनुमति दे। मुझे लगता है कि आपको इसे देखना चाहिए। अच्छी किस्मत। – statosdotcom