Android 启动自定义chromecast接收器有时会超时

Android 启动自定义chromecast接收器有时会超时,android,chromecast,Android,Chromecast,我有一个定制的Chromecast接收器,当用户从Cast按钮选择他们的Chromecast设备时,我会从Android应用程序启动它。我发现我经常在初始连接时得到一个超时,但第二次可以正常工作。问题很可能是我的web服务器响应不够快,还是有其他因素可能导致超时 我正在获取onApplicationConnectionFailed()中的CastStatusCodes.TIMEOUT 我要启动的代码 (编辑以包括启动应用程序) Builder=new-GoogleApiClient.Builde

我有一个定制的Chromecast接收器,当用户从Cast按钮选择他们的Chromecast设备时,我会从Android应用程序启动它。我发现我经常在初始连接时得到一个超时,但第二次可以正常工作。问题很可能是我的web服务器响应不够快,还是有其他因素可能导致超时

我正在获取onApplicationConnectionFailed()中的CastStatusCodes.TIMEOUT

我要启动的代码 (编辑以包括启动应用程序)

Builder=new-GoogleApiClient.Builder(mContext);
addApi(Cast.API,apoptionsBuilder.build());
builder.addConnectionCallbacks(此);
builder.addOnConnectionFailedListener(此);
mApiClient=builder.build();
if(mApiClient==null)返回;
mApiClient.connect();
...
Cast.CastApi.launchApplication(mApiClient,MAPApplicationID)
.setResultCallback(新的ResultCallback(){
@凌驾
public void onResult(ApplicationConnectionResult){
if(result.getStatus().issucess()){
onApplicationConnected(
result.getApplicationMetadata(),
result.getApplicationStatus(),
result.getSessionId(),
result.getwasrunched());
}否则{
OnApplicationConnection失败(result.getStatus().getStatusCode());
}
}
});   

您发布的代码是在加载应用程序之前发布的,因此,如果您的onApplicationConnectionFailed中出现超时,则该代码位于代码的较低位置,而不是您在此处发布的部分。如果应用程序加载失败,您需要检查您的网络和web服务器等。

调用
launchApplication()
result.getStatus()
返回超时(而不是成功)后,您对receiver app成功启动的情况有何想法?然后接收器应用程序在一段时间后关闭(因为没有与之连接的发送者)。如果接收器收到启动消息,它将启动启动过程,然后响应发送者;但是,如果响应没有及时发送给发送方,发送方会认为超时;事实上,它不知道发射成功与否,因为它没有收到任何消息;因此,可以看到应用程序启动,但发送方抛出超时错误。我建议你也检查一下你的接收者日志,看看是否有任何东西可以让你找到原因。
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());
        }
    }
});