2

我正在从一个打开屏幕并关闭锁屏的广播接收器开始一个活动(通过使用窗口管理器标志)。这部分按计划进行,活动开始。在 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,所以这没有任何帮助。

4

1 回答 1

1

我想到了。这真的很奇怪,我使用 Android YouTube 应用程序提供的链接(通过使用分享按钮)。然后我使用 String.substring 提取视频 ID。会发生什么,我开始基于我的 S2 构建它,如果我通过在意图中获取额外内容来获取 YouTube 链接,则返回的字符串如下所示: httpsVIDEOID ://www.youtube.com/watch?v= &feature=youtube_gdata_player

如果我在 N7 或 Note 2 上尝试此操作,它会返回: httpVIDEOID ://www.youtube.com/watch?v = &feature=youtube_gdata_player

所以 https 链接与​​ http 链接。在我的 S2 上,我正在运行 CM,所以这可能是玩家返回给我安全链接的原因,但当然现在有 2 个场景用于子字符串。

于 2013-05-01T07:23:05.770 回答