问题描述
在android youTubePlayerView播放Youtube视频时,只要状态栏展开或长按Android设备的电源按钮,播放器就会引发错误UNAUTHORIZED_OVERLAY并显示以下警告,并且视频会暂停:
W / YouTubeAndroidplayerAPI(2987):由于播放器顶部未经授权的覆盖,视频播放停止。播放器视图被另一个窗口遮挡。
如果这是一项功能,则可以,欢迎使用。但是,当移除叠加层时(例如,状态栏再次缩小时),我们应该收到通知,以便我们可以恢复暂停的视频。如果没有通知,那么我们应该能够(以编程方式)手动检查是否已清除障碍物。
我尝试过的是在几毫秒后播放视频。但这不是一个好主意,因为如果没有消除障碍物并且我播放了视频,那么视频将播放几毫秒,然后再次暂停并抛出UNAUTHORIZED_OVERLAY。请参见以下代码段:
@Override
protected void onDestroy() {
youTubePlayer = null;
super.onDestroy();
}
private final class MyPlayerStatechangelistener implements PlayerStatechangelistener {
@Override
public void onLoading() {
}
@Override
public void onLoaded(String videoId) {
}
@Override
public void onAdStarted() {
}
@Override
public void onVideoStarted() {
}
@Override
public void onVideoEnded() {
}
@Override
public void onError(ErrorReason reason) {
if(reason == ErrorReason.UNAUTHORIZED_OVERLAY)
{
//try again after a few mill secs
delayedplay();
}
}
}
private void delayedplay()
{
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(youTubePlayer != null)
{
youTubePlayer.play();
}
}
},300);
}
所需的代码应为:
@Override
protected void onDestroy() {
youTubePlayer = null;
super.onDestroy();
}
private final class MyPlayerStatechangelistener implements PlayerStatechangelistener {
@Override
public void onLoading() {
}
@Override
public void onLoaded(String videoId) {
}
@Override
public void onAdStarted() {
}
@Override
public void onVideoStarted() {
}
@Override
public void onVideoEnded() {
}
@Override
public void onError(ErrorReason reason) {
if(reason == ErrorReason.UNAUTHORIZED_OVERLAY)
{
//try again after a few mill secs
delayedplay();
}
}
}
private void delayedplay()
{
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(isActivityCovered())
{
delayedplay();
}
else{
if(youTubePlayer != null)
{
youTubePlayer.play();
}
}
}
},300);
}
private boolean isActivityCovered()
{
//Code to be implemented
}
我的活动扩展了 YouTubeBaseActivity 。请帮助实现 isActivityCovered 功能或提出您的想法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)