我正在从一个打开屏幕并关闭锁屏的广播接收器开始一个活动(通过使用窗口管理器标志)。这部分按计划进行,活动开始。在 onCreate 中,我初始化了一个 YouTubePlayerView 并开始播放某个 YouTube 视频。这在我的 Galaxy S2 上按计划工作,但在我的 Nexus 7 和我的 Galaxy Note 2 上,YouTube 视频无法启动,并在 YouTubePlayerView 中给我一条消息,显示“无效请求”。
现在,我想到了这一点,并且知道这个 API 会导致一些奇怪的行为。我想出了屏幕未完全打开的选项,这导致视频无法加载,我用它来检查屏幕是否打开,然后再调用 YouTubePlayerView 上的初始化:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
ScreenOn = pm.isScreenOn();
if(ScreenOn){
playerView.initialize(DEVELOPER_KEY, this);
}else{
Toast.makeText(this, "SCREEN ON LATE", Toast.LENGTH_LONG).show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
myHandler.post(updateRunnable);
}
}, 2000);
}
因此,如果屏幕不亮,我会等待 2 秒,然后再次尝试初始化 YouTubePlayerView。我省去了 myHandler 中的代码,因为它只是通过之后调用初始化来工作。
出于某种原因,它仍然给我“无效请求”消息。我可以看到初始化发生,但随后一切都停止并弹出相同的消息。LogCat 什么也没显示,没有错误或奇怪的行为。我在我的 S2 上试过这个,它只是开始播放视频,没有任何问题。但在 Note 7 和 Note 2 上,问题仍然存在。
我以前用过YouTube API,从来没有遇到过这种问题。
编辑:onError 给我的只是 INTERNAL_ERROR,所以这没有任何帮助。