我有一些WebView代码,我试图在YouTube频道上播放YouTube视频。但它所做的只是在视频上显示微调器图标,而不是实际启动视频。有谁知道如何解决这个问题?
public class YoutubeActivity extends Activity
{
WebView webview = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
webview = new WebView(this);
webview.getSettings().setAppCacheEnabled(false);
webview.getSettings().setJavaScriptEnabled(true);
webview.setInitialScale(1);
webview.getSettings().setPluginState(PluginState.ON);
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
//webSettings.getMediaPlaybackRequiresUserGesture();
webSettings.setAllowContentAccess(true);
webSettings.setEnableSmoothTransition(true);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setSupportZoom(true);
webSettings.setUseWideViewPort(true);
setContentView(webview);
webview.loadUrl("http://www.youtube.com/g33ktalktv");
}
public void onBackPressed ( )
{
//Class.forName("com.***.HTML5WebView").getMethod("onPause", (Class[]) null).
//invoke(html5WebView, (Object[]) null);
webview.clearView();
}
@Override
public void onStop()
{
super.onStop();
// your code
webview.clearView();
}
}
这是明确的设置:
<activity
android:name="YoutubeActivity"
android:label="Some string"
android:hardwareAccelerated="true"/>
提前谢谢!
答案 0 :(得分:10)
使用WebView播放YouTube视频需要在不同的Android操作系统版本上进行大量测试和调试,因为Android 2.x和4.x之间的功能和错误不同。
使用YouTube Android Player API将YouTube视频嵌入到您自己的应用中时,可以使用sample app进行更少控制的错误方法是{{3}}所以如果您关注的话应该不会太难他们的步骤。
答案 1 :(得分:2)
您是否尝试过使用自己的WebChromeClient
?这个问题似乎很重要。
WebView and HTML5 <video>
您需要创建其中一个并自行实现,类似于您为WebViewClient
所做的操作。
webview.setWebChromeClient(new WebChromeClient() {
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
super.onShowCustomView(view, callback);
if (view instanceof FrameLayout) {
FrameLayout frame = (FrameLayout) view;
if (frame.getFocusedChild() instanceof VideoView) {
VideoView video = (VideoView) frame.getFocusedChild();
frame.removeView(video);
a.setContentView(video);
video.setOnCompletionListener(this);
video.setOnErrorListener(this);
video.start();
}
}
}
});
确保将webview.getSettings().setPluginsEnabled(true);
添加到您的网络视图设置。
最重要的是,要在WebView
中加载任何网页,请务必在您的清单中获得INTERNET
权限:
<uses-permission android:name="android.permission.INTERNET"/>
答案 2 :(得分:0)
使用
<application
android:hardwareAccelerated="true"
android:allowBackup="true">
</application>
完美的工作。