2013-04-30 69 views
2

我开始了一个来自broadcastreceiver的活动,它打开屏幕并关闭锁屏(通过使用windowmanager标志)。这部分按计划进行,活动开始。在onCreate中,我初始化一个YouTubePlayerView并开始播放某个YouTube视频。这在我的Galaxy S2上按照计划工作,但在我的Nexus 7和Galaxy Note 2上,YouTube视频未启动,并在YouTubePlayerView中显示“无效请求”消息。使用Android YouTube API的请求无效

现在,我想到了这一点,并知道这个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中的代码,因为之后调用initialize就可以工作。

由于某些原因,它仍然给我“无效请求”消息。我可以看到初始化发生,但然后一切都停止并弹出相同的消息。 LogCat不显示任何内容,没有错误或奇怪的行为。我在我的S2上试过了,它只是在没有任何问题的情况下开始播放视频。但在Note 7和Note 2上,问题仍然存在。

我以前用过YouTube API,我从来没有遇到过这样的问题。

编辑:onError让我回来只是INTERNAL_ERROR,所以这没有任何帮助。

回答

1

我想通了。这真的很奇怪,我使用Android YouTube应用程序提供的链接(通过使用共享按钮)。然后我使用String.substring提取视频ID。会发生什么事,我开始建设这个基础上我的S2,如果我通过获取额外的在意图获取YouTube链接返回的字符串看起来是这样的: https://www.youtube.com/watch?v=VIDEOID &功能= youtube_gdata_player

如果我试试这个对我的N7或者注2返回: http://www.youtube.com/watch?v=VIDEOID &功能= youtube_gdata_player

所以一个HTTPS链接VS一个HTTP链接。在我的S2上我正在运行CM,所以也许这是玩家返回给我一个安全链接的原因,但是当然现在有2个子串的场景。