目的
实现在 webview 中视频全屏播放。
遇到的问题
点击全屏按钮时没有调用 onShowCustomView。导致在代码中无法处理全屏事件。
解决方法
使用加速度传感器,监控手机的方向变化,根据手机的方向变化来判断是否应该变为横向,如果是横向的话视频会全屏。
主要代码
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
@Override protected void onResume() { sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST); super.onResume(); }
应为我的 activity 继承了 SensorEventListener,所以上面的代码中使用的是 this。
@Override public void onSensorChanged(SensorEvent event) { final int sensorType = event.sensor.getType(); //values[0]:X轴,values[1]:Y轴,values[2]:Z轴 final float[] values = event.values; float x = values[0]; float y = values[1]; float z = values[2]; x = Math.abs(x); y = Math.abs(y); z = Math.abs(z); if ((x >= 6 && z < = 6) || (x >= 6 && y >= 6)) { Log.i(TAG, "heng" + x + "--" + y + "--" + z); if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); } } else if ((x < = 3 && z <= 6) || (z <= 6 && y <= 3)) { Log.i(TAG, "shu" + x + "--" + y + "--" + z); if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } }
还有待解决的问题:
这个解决的是网页内部有视频,但是没有视频都是文字呢?这样如果也横屏的话就不太好了,这个问题正在想(2015 年 8 月 31 日 12:11:25)
想到了一个解决办法,不过可能会有点问题(网络加载慢或者重定向),下面是解决办法:
测试代码下载(AndroidStudio 版) 测试代码下载(添加播放器判断)在 WebViewClient 中的 onPageFinished 方法中获得 html 的整体代码,然后在里面寻找播放的关键词。
第一步: webView.addJavascriptInterface(jsif, "local_obj");第二步 webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { view.loadUrl("javascript:window.local_obj.showSource(''+" + "document.getElementsByTagName('html')[0].innerHTML+'');"); super.onPageFinished(view, url); } });第三步 @JavascriptInterface public void showSource(String html) { if (html.contains("yk-player-inner")) { Log.d("sumile", "优酷播放器"); } else if (html.contains("play-view")) { Log.d("sumile", "土豆播放器"); } }可能会有问题,这只是我的一个想法。如果有什么更好的办法请下面留言告诉我,拜谢~
里面就 4 个类,Eclipse 直接拷过去就可以了。
转载请注明:热爱改变生活.cn » Android WebView “ 曲线救国” 实现全屏播放
本博客只要没有注明“转”,那么均为原创。 转载请注明链接:sumile.cn » Android WebView “ 曲线救国” 实现全屏播放