Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

播放百度百科视频时,首次横屏会失败,第二次及之后才会正常 #56

Open
KennyLeung opened this issue May 16, 2023 · 10 comments

Comments

@KennyLeung
Copy link

KennyLeung commented May 16, 2023

如题。打开一个视频,点击视频右下角的全屏按钮,会横屏,然后又切换回竖屏。
跟踪代码发现,是由于 ByWebChromeClient.java中下面代码引起:
@SuppressLint("SourceLockedOrientationActivity")
@OverRide
public void onHideCustomView() {
......
// 还原到之前的屏幕状态
if (!isFixScreenPortrait) {
if (onByWebChromeCallback == null || !onByWebChromeCallback.onHandleScreenOrientation(false)) {
// 为空或返回为true时,自己处理横竖屏。否则默认设置为竖屏
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
........
}
注释上面的 if 语句块,首次全屏会切换到横屏状态,但标题栏及系统状态栏没有隐藏,只能看到视频的上半部分。
问了 ChatGPT-4,提供了两种解决思路:
Snipaste_2023-05-16_13-26-22
Snipaste_2023-05-16_13-27-07
Snipaste_2023-05-16_13-27-19

@youlookwhat
Copy link
Owner

我找了一个百科里的视频确实如此。
但是用demo里的视频播放示例没什么问题,用百科里其他的视频也没问题。

这个有问题的视频,全屏后应该也是竖屏显示的,但是ByWebVIew默认是横屏显示的。而且我后面清除缓存再次进去后也是好的,很奇怪,我这几天仔细看看

@KennyLeung
Copy link
Author

我用不同型号的手机测试百科里的秒懂百科视频,任何一个视频都存在相同的问题:打开一个ByWebView窗口,显示一个视频,点击视频右下角的全屏按钮,会横屏,一秒后又自动返回到竖屏状态。返回竖屏状态后,再次点击全屏按钮,这次就正常了,只要保持这个ByWebView窗口不关闭,之后所有视频都能正常切换到全屏。要是关闭了ByWebView窗口,再次打开,就会重现上述现象。我估计是上述代码中两条if 语句的涉及到的条件有些漏洞。

@youlookwhat
Copy link
Owner

麻烦贴一个有问题的url,我这边用你这个链接试试

@KennyLeung
Copy link
Author

@youlookwhat
Copy link
Owner

如题。打开一个视频,点击视频右下角的全屏按钮,会横屏,然后又切换回竖屏。 跟踪代码发现,是由于 ByWebChromeClient.java中下面代码引起: @SuppressLint("SourceLockedOrientationActivity") @OverRide public void onHideCustomView() { ...... // 还原到之前的屏幕状态 if (!isFixScreenPortrait) { if (onByWebChromeCallback == null || !onByWebChromeCallback.onHandleScreenOrientation(false)) { // 为空或返回为true时,自己处理横竖屏。否则默认设置为竖屏 mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } ........ } 注释上面的 if 语句块,首次全屏会切换到横屏状态,但标题栏及系统状态栏没有隐藏,只能看到视频的上半部分。 问了 ChatGPT-4,提供了两种解决思路: Snipaste_2023-05-16_13-26-22 Snipaste_2023-05-16_13-27-07 Snipaste_2023-05-16_13-27-19

这里不能注释,是因为取消视频全屏时,要把页面设置为竖屏,if那个语句就是设置竖屏的代码,不然就会有:标题栏及系统状态栏没有隐藏的问题

@youlookwhat
Copy link
Owner

比如这个:中国国家羽毛球队_秒懂百科 https://baike.baidu.com/video?collectionId=0&from=lemma&fromIndex=0&fromModule=lemma_top&fromPage=lemmaTop&isSensitive=0&lemmaId=819807&secondId=28680366

我用这个链接在项目的demo里尝试时,还未发现这个问题。我的手机是OPPO Find X3 Pro。
但是我之前确实出现过一次,然而后来复现不了了

@KennyLeung
Copy link
Author

好吧。我也下载最新版demo测试一下,如果没有问题,那有可能我集成时可能出了bug;如果能重现我再找出差异之处。

@youlookwhat
Copy link
Owner

是的,看项目里的demo有没有问题,复现不了的话我这边不太好改

@vivian688
Copy link

vivian688 commented Jun 13, 2023

中国国家羽毛球队_秒懂百科 https://baike.baidu.com/video?collectionId=0&from=lemma&fromIndex=0&fromModule=lemma_top&fromPage=lemmaTop&isSensitive=0&lemmaId=819807&secondId=28680366

发现了个bug,用demo加载这条百科视频链接,点第一个视频全屏播放后关闭全屏,再点击第二个视频全屏播放,还是第一个视频的

@youlookwhat
Copy link
Owner

中国国家羽毛球队_秒懂百科 https://baike.baidu.com/video?collectionId=0&from=lemma&fromIndex=0&fromModule=lemma_top&fromPage=lemmaTop&isSensitive=0&lemmaId=819807&secondId=28680366

发现了个bug,用demo加载这条百科视频链接,点第一个视频全屏播放后关闭全屏,再点击第二个视频全屏播放,还是第一个视频的

这个在问题在这里提了 #59

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants