Android webview播放优酷土豆的问题

要播放优酷的视频,需要在Manifest文件里面设置:android:hardwareAccelerated="true",否则在播放界面没有视频图像。但是设置了这个属性之后,在进入土豆界面的时候,程序直接崩溃:

 08-28 18:00:28.633  11054-11054/cn.sumile.webviewfw E/Surface﹕ dequeueBuffer: IGraphicBufferProducer::requestBuffer failed: -2147483646
08-28 18:00:28.633  11054-11054/cn.sumile.webviewfw E/Surface﹕ dequeueBuffer failed (Unknown error 2147483646)
08-28 18:00:28.643  11054-11054/cn.sumile.webviewfw E/ViewRootImpl﹕ Could not lock surface
    java.lang.IllegalArgumentException
            at android.view.Surface.nativeLockCanvas(Native Method)
            at android.view.Surface.lockCanvas(Surface.java:244)
            at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2474)
            at android.view.ViewRootImpl.draw(ViewRootImpl.java:2448)
            at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2292)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1922)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1039)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5648)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
            at android.view.Choreographer.doCallbacks(Choreographer.java:574)
            at android.view.Choreographer.doFrame(Choreographer.java:544)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5049)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
            at dalvik.system.NativeStart.main(Native Method)

以上土豆bug出现在小米4上,Android4.4.4.其他手机没问题。。。艹艹艹。。
同时,不管怎么设置,土豆的视频都没办法显示视频图像。

问题:

1.怎样让土豆显示视频图像。
2.怎么让优酷和土豆中点击全屏然后在手机中全屏播放(onShowCustomView已经设置,但是优酷和土豆完全不理他啊)
3.在优酷和土豆中如何权衡这个硬件加速的问题(这个现在不重要。。)

http://my.oschina.net/u/616133/blog/374958

  1. 修改AndroidManifest.xml 在Application节点上增加 ? 1 android:hardwareAccelerated="true" 当然你也可以在WebView所在的Activity节点上增加此属性
  2. 在WebView的布局XML上增加 android:layerType="hardware" ? 1 2 3 4 5 6
  3. 在Java代码中设置相应属性 ? 1 2 3 4 5 6 7 8 9 10 WebSettings ws=newsContent.getSettings(); ws.setJavaScriptEnabled(true); ws.setAllowFileAccess(true); ws.setDatabaseEnabled(true); ws.setDomStorageEnabled(true); ws.setSaveFormData(false); ws.setAppCacheEnabled(true); ws.setCacheMode(WebSettings.LOAD_DEFAULT); ws.setLoadWithOverviewMode(false);//<==== 一定要设置为false,不然有声音没图像 ws.setUseWideViewPort(true);

4.接下来解决播放的视频无法停止的问题
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Override
protected void onResume() {
super.onResume();
//恢复播放
webView.resumeTimers();
}

@Override
protected void onPause() {
super.onPause();
//暂停播放
webView.pauseTimers();
}

@Override
protected void onDestroy() {
super.onDestroy();
//一定要销毁,否则无法停止播放
webView.destroy();
}

OK,就这样,android 4.x 以上播放就没什么问题了

。。。。等等
还忘了,如果WebView打开的网页 包含有分享的 链接,需要分享的链接是 通用的链接即, ,若直接使用 embed 的 不会播放,还是那个原因,android不支持flash插件播放,

http://my.oschina.net/u/616133/blog/374958

http://my.oschina.net/u/616133/blog/374958