2014-02-21 32 views
3

我有一個自定義的Chromecast接收器,當用戶從Cast按鈕中選擇Chromecast設備時,我會從Android應用中啓動該接收器。我發現我經常在初始連接上發生超時,但第二次工作正常。問題很可能是我的Web服務器沒有足夠快速響應,還是有其他因素可能導致超時?啓動自定義Chromecast接收器有時會超時

我得到onApplicationConnectionFailed()中的CastStatusCodes.TIMEOUT。

我的代碼,推出 (編輯成包括launchApplication)

Builder builder = new GoogleApiClient.Builder(mContext); 
builder.addApi(Cast.API, apiOptionsBuilder.build()); 
builder.addConnectionCallbacks(this); 
builder.addOnConnectionFailedListener(this); 
mApiClient = builder.build(); 

if (mApiClient == null) return; 
mApiClient.connect(); 

... 

Cast.CastApi.launchApplication(mApiClient, mApplicationId) 
.setResultCallback(new ResultCallback<Cast.ApplicationConnectionResult>() { 

    @Override 
    public void onResult(ApplicationConnectionResult result) { 
     if (result.getStatus().isSuccess()) { 
      onApplicationConnected(
       result.getApplicationMetadata(), 
       result.getApplicationStatus(), 
       result.getSessionId(), 
       result.getWasLaunched()); 
     } else { 
       onApplicationConnectionFailed(result.getStatus().getStatusCode()); 
     } 
    } 
}); 

回答

0

你已經發布的代碼是在裝載前,所以如果你正在你的onApplicationConnectionFailed超時的應用程序,然後將其進一步下跌的你的代碼,而不是你在這裏發佈的部分。如果是你的應用程序加載失敗,你需要檢查你的網絡和網絡服務器等。

+0

好的,我會檢查網絡端的東西 –

+0

你對接收器的情況有任何想法app **成功**調用'launchApplication()'後啓動,但'result.getStatus()'返回TIMEOUT(而不是成功)?然後,接收器應用程序會在一段時間後關閉(由於沒有發送者與它連接)。 –

+0

如果接收者獲得啓動消息,它將啓動啓動過程,然後回覆發件人;但是,如果響應沒有及時將其發送給發件人,發件人會認爲超時;事實上它不知道發射是否成功,因爲它沒有收到任何消息;因此可以看到啓動的應用程序,但發件人會引發超時錯誤。我建議你也檢查一下你的接收器日誌,看看有沒有什麼東西可以指出你的原因。 –