2013-06-13 9 views
2

bleacher report app에는 Youtube 비디오가 포함 된 WebView가 있습니다. 전체 화면 아이콘을 누르면 비디오가 전체 화면으로 재생됩니다. 어떻게해야합니까? 그것은 서버 측면 문제 또는 안드로이드 하나인가요? 그냥 YouTube 플레이어인데도 불구하고 youtube 플레이어가 아니라 다른 플레이어 인 youtube 비디오입니다.webview에서 비디오를 재생하는 방법

편집 : YouTube 구성 요소는 URL 페이지입니다. YouTube 웹 페이지가 아니므로 "shouldOveriteUrl"을 사용할 수 없습니다. 또한 YouTube 동영상 만 말하는 것이 아니며 모든 동영상 구성 요소에 대해 이야기하고 있습니다. 다른 플레이어 또는 다른 플레이어와 비디오 구성 요소를 래핑하는 것과 같이 서버에서 수행 할 수 있습니까? 감사합니다.

+0

는 it.http을 시도해보십시오 :

그래서 된 활동에의 웹보기 개체를 참조하여이 작업을 수행 할 수 있습니다 //code.google.com/p/을 html5webview/source/browse/trunk/HTML5WebView/src/org/itri/html5webview/HTML5WebView.java – mukesh

답변

1

//는 서버 측 비디오가 있어야합니다 안드로이드 당신이 비디오가 웹보기에서 실행하려는 경우와 응용 프로그램을 사용하지 않고 유튜브 비디오

public class MyWebViewClient extends WebViewClient { 

public Activity mActivity; 

public MyWebViewClient(Activity activity,) { 
    super(); 
    mActivity = activity; 
} 

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    Uri uri = Uri.parse(url); 
    if (uri.getHost().contains("youtube.com")) { 
     IntentUtils.viewYoutube(mActivity, url); 
     return true; 
    } 

    return false; 
} 

public static void viewYoutube(Context context, String url) { 
    IntentUtils.viewWithPackageName(context, url, "com.google.android.youtube"); 
} 

public static void viewWithPackageName(Context context, String url, String packageName) { 
    try { 
     Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
     if (isAppInstalled(context, packageName)) { 
      viewIntent.setPackage(packageName); 
     } 
     context.startActivity(viewIntent); 
    } catch (Exception e) { 
     Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
     context.startActivity(viewIntent); 
    } 
} 

public static boolean isAppInstalled(Context context, String packageName) { 
    PackageManager packageManager = context.getPackageManager(); 
    try { 
     packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); 
     return true; 
    } catch (NameNotFoundException e) { 
    } 
    return false; 
} 

@Override 
public void onPageFinished(final WebView view, String url) { 
    String javascript = "javascript:" + 
     "var iframes = document.getElementsByTagName('iframe');" + 
     "for (var i = 0, l = iframes.length; i < l; i++) {" + 
     " var iframe = iframes[i]," + 
     " a = document.createElement('a');" + 
     " a.setAttribute('href', iframe.src);" + 
     " d = document.createElement('div');" + 
     " d.style.width = iframe.offsetWidth + 'px';" + 
     " d.style.height = iframe.offsetHeight + 'px';" + 
     " d.style.top = iframe.offsetTop + 'px';" + 
     " d.style.left = iframe.offsetLeft + 'px';" + 
     " d.style.position = 'absolute';" + 
     " d.style.opacity = '0';" + 
     " d.style.filter = 'alpha(opacity=0)';" + 
     " d.style.background = 'black';" + 
     " a.appendChild(d);" + 
     " iframe.offsetParent.appendChild(a);" + 
     "}"; 
    view.loadUrl(javascript); 

    super.onPageFinished(view, url); 
} 
+0

YouTube 동영상은 페이지의 구성 요소입니다. 그 url에 "유튜브"를 들고 있지 않습니다. 또한, 내 질문을 편집하여 다시 확인할 수 있으면 greate 될 것입니다. – roiberg

+0

@roiberg 웹보기에서 어떤 비디오도 재생할 수 있습니다. –

+0

@roiberg 시도해보십시오 https://gist.github.com/Offbeatmammal/3718414 –

0

을 지불이이 샘플 작업을 시도 플레이어.

기본적으로 Webview에서는 웹 사이트에서 비디오 플레이어가 사용하고있는 것 같은 Javascript를 허용하지 않습니다. 비디오를 재생하려고 적어도 시도하기 위해 자바 스크립트를 사용하도록 Webview에 말할 필요가있을 것입니다. (필자가 직접 해본 적이 없기 때문에 시도해 봅니다. 보통 비디오에 플레이어 활동을 사용합니다). :) ..이 당신을 위해 도움이

browser = (WebView) findViewById(R.id.webbrowser_wvViewer);  
browser.getSettings().setJavaScriptEnabled(true); 

희망을

+0

YouTube 동영상은 페이지의 구성 요소입니다. 그 url에 "유튜브"를 들고 있지 않습니다. 또한, 내 질문을 편집했는데, 다시 확인할 수 있으면 greate 될 것입니다. – roiberg