gpt4 book ai didi

android - Cast 应用程序中的 "GoogleApiClient is not connected yet"异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:40:35 24 4
gpt4 key购买 nike

我正在开发一个将内容转换到 Chromecast 的 Android 应用程序。有时在 onConnected 方法的 com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks 实现中,我得到一个

java.lang.IllegalStateException: GoogleApiClient is not connected yet.

异常。

这是堆栈跟踪:

    FATAL EXCEPTION: main
Process: com.joaomgcd.autocast, PID: 13771
java.lang.IllegalStateException: GoogleApiClient is not connected yet.
at com.google.android.gms.internal.eg.a(Unknown Source)
at com.google.android.gms.common.api.GoogleApiClient.b(Unknown Source)
at com.google.android.gms.cast.Cast$CastApi$a.launchApplication(Unknown Source)
at com.joaomgcd.autocast.media.MediaConnectionCallbacks.onConnected(MediaConnectionCallbacks.java:37)
at com.google.android.gms.internal.dx.b(Unknown Source)
at com.google.android.gms.common.api.GoogleApiClient.bn(Unknown Source)
at com.google.android.gms.common.api.GoogleApiClient.f(Unknown Source)
at com.google.android.gms.common.api.GoogleApiClient$2.onConnected(Unknown Source)
at com.google.android.gms.internal.dx.b(Unknown Source)
at com.google.android.gms.internal.dx.bT(Unknown Source)
at com.google.android.gms.internal.dw$h.b(Unknown Source)
at com.google.android.gms.internal.dw$h.b(Unknown Source)
at com.google.android.gms.internal.dw$b.bR(Unknown Source)
at com.google.android.gms.internal.dw$a.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)

这似乎只有在我之前已经连接到 GoogleApiClient 并且正在第二次连接时才会发生。在两次调用之间,我使用以下代码断开与 api 客户端的连接。

我猜这是一个错误。我对么?由于我在 onConnected 方法中,GoogleApiClient 应该已经连接。

我该怎么做才能绕过它?我是否应该等待一段时间,直到 GoogleApiClient 真正连接起来?

我在一个服务中这样做,这里是相关的部分:

服务启动时:

mMediaRouter.addCallback(mMediaRouteSelector, mediaCallback, MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN);

mediaCallback 有这段代码:

@Override
public void onRouteAdded(MediaRouter router, RouteInfo route) {
super.onRouteAdded(router, route);
if (route.getDescription().equals("Chromecast")) {
...
mSelectedDevice = com.google.android.gms.cast.CastDevice.getFromBundle(route.getExtras());

...
castClientListener = new CastListener(context, apiClient);

Cast.CastOptions.Builder apiOptionsBuilder = Cast.CastOptions.builder(mSelectedDevice, castClientListener);
...
apiClient.set(new GoogleApiClient.Builder(context).addApi(Cast.API, apiOptionsBuilder.build()).addConnectionCallbacks(connectionCallback).addOnConnectionFailedListener(new MediaConnectionFailedListener(context)).build());
apiClient.get().connect();
}

}

connectionCallback 有这段代码:

@Override
public void onConnected(final Bundle arg0) {
...
Cast.CastApi.launchApplication(apiClient, UtilAutoCast.CHROMECAST_APP_ID, false).setResultCallback(connectionCallback);
...
}

上面的代码是发生崩溃的部分。

当我停止服务时,我运行这段代码:

if (mMediaRouter != null) {
mMediaRouter.removeCallback(mediaCallback);
mMediaRouter = null;
}
if (apiClient != null) {
Cast.CastApi.stopApplication(apiClient);
if (apiClient.isConnected()) {
apiClient.disconnect();
apiClient = null;
}
}

提前致谢。

最佳答案

Google APIs for Android > GoogleApiClient

You should instantiate a client object in your Activity's onCreate(Bundle) method and then call connect() in onStart() and disconnect() in onStop(), regardless of the state.

GoogleApiClient 的实现似乎仅为单个实例设计。最好在 onCreate 中只实例化一次,然后使用单个实例执行连接和断开连接。

我猜想只有一个 GoogleApiClient 可以实际连接,但多个实例正在接收 onConnected 回调。

在您的情况下,不在 onStart 中调用 connect 可能没问题,但只能在 onRouteAdded 中调用。

我觉得这个问题和Fatal Exception: java.lang.IllegalStateException GoogleApiClient is not connected yet很相似

关于android - Cast 应用程序中的 "GoogleApiClient is not connected yet"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21831224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com