Android附近无法在Android Things上运行

时间:2018-07-18 19:19:49

标签: android android-things google-nearby

我有以下代码:

OnFailureListener onFailureListener = new OnFailureListener() {
  @Override
  public void onFailure(@NonNull Exception e) {
    Log.e(TAG, "bum", e);
  }
};
connectionsClient.startAdvertising("Device A", getPackageName(), myCallback, new AdvertisingOptions(STRATEGY))
        .addOnFailureListener(onFailureListener);

如果我在手机上运行它可以正常工作,但是当我在Android Things设备上运行它时,出现以下错误

com.google.android.gms.common.api.ApiException: 17: Error resolution was canceled by the user, original error message: UNKNOWN_ERROR_CODE(8050): null 

到目前为止,我的手机的Google Play服务版本为12.8.72,而Android Things图片的Google Play服务版本为12.5.20

还有其他人遇到同样的问题,并找到了解决方案吗?

3 个答案:

答案 0 :(得分:3)

Play Services的版本固定在Android Things的每个发行版上,不会通过Play商店自动更新(有关Play服务如何在Android Things上运行的更多详细信息,请参见Google Services)。因此,您需要为“附近”选择一个客户端库版本,以与12.5.20 Play Services APK配合使用。

您也可能会在更高版本上取得成功,但是12.0.1是带有Android Things 1.0.x的Nearest客户端的经过测试的已知版本:

dependencies {
    ...
    implementation "com.google.android.gms:play-services-nearby:12.0.1"
}

答案 1 :(得分:3)

除了添加到Varun's answer之外,我猜测默认启动器仍在运行并占用连接数。 IoT launcher看起来像这样:

enter image description here

您可以通过向清单中添加一个意图过滤器来使您的应用成为家庭应用,例如(official documentation

<application
android:label="@string/app_name">
<activity android:name=".HomeActivity">
    <!-- Launch activity as default from Android Studio -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>

    <!-- Launch activity automatically on boot, and re-launch if the app terminates. -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.HOME"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

将意图过滤器添加到清单并安装+运行应用后,您将要确保默认启动器不再运行。最简单的方法是重启您的Android Things设备。由于您的应用现在是家庭应用,因此它将是重启后第一个启动的应用。

我不确定您拥有什么Android Things版本/系统映像,但是您也可以使用以下adb命令之一进行操作:

adb shell am force-stop com.android.iotlauncher.ota

或者也许:

adb shell am force-stop com.android.iotlauncher

答案 2 :(得分:1)

错误代码8050为API_CONNECTION_FAILED_ALREADY_IN_USE-您可以详细了解here

从本质上讲,Nearly Connections尚不支持多个客户端使用它,因此已经有其他应用程序正在使用它,该应用程序需要被销毁-可能是设置了Android Things设备的应用程序。