2013-04-30 70 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個子串的場景。