webview点击全屏播放时能否获取原视频宽高来自动选横屏竖屏播放
时间: 2024-09-30 09:14:30 浏览: 31
在Webview中,当视频点击全屏播放时,通常浏览器会负责全屏播放逻辑,而不是直接提供视频的原始宽高信息给你去动态选择横竖屏。浏览器可能会基于用户的设备屏幕尺寸和设备方向来决定视频的显示方式。
然而,如果你希望在视频开始播放前就确定显示方式,你可以尝试在页面加载完成后通过JavaScript获取视频的元数据,包括宽度和高度。然后在Android端,你可以将这些信息传递给WebChromeClient的相应回调函数,例如`onReceivedVideoSize`,但这并不是一种标准做法,因为这依赖于网页开发者对视频元素的样式和配置。
下面是一个简单的例子,假设你已经在JavaScript中成功获取了视频的宽高信息:
```javascript
// JavaScript部分
window.onload = function () {
var video = document.querySelector('video');
var width = video.videoWidth;
var height = video.videoHeight;
window.postMessage({ 'width': width, 'height': height }, '*');
}
// Android Java部分
webview.addJavascriptInterface(new Object() {
@JavascriptInterface
public void onVideoSizeReceived(String widthStr, String heightStr) {
int width = Integer.parseInt(widthStr);
int height = Integer.parseInt(heightStr);
// 根据宽高比例判断横竖屏
float ratio = (float) width / height;
if (ratio > 1.67) {
// 横屏
setVideoOrientation(WebChromeClient.DISPLAY_ORIENTATION_LANDSCAPE);
} else {
// 竖屏
setVideoOrientation(WebChromeClient.DISPLAY_ORIENTATION_PORTRAIT);
}
}
private void setVideoOrientation(int orientation) {
// 调整VideoView的显示方向
// ...
}
}, "VideoHelper");
```
注意,这个示例假设你能够安全地在JavaScript和Java之间进行通信。实际操作可能需要考虑跨域等问题。
阅读全文