Android 附近没有处理 Android 事情

Android Nearby not working on Android Things

我有以下代码:

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);

如果我 运行 在我的 phone 上它按预期工作,但是当我 运行 它在我的 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 

据我目前所见,我的 phone 有 Google Play Services 版本 12.8.72,但是 Android Things 图像有 Google Play Services 12.5 .20

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

Play 服务的版本在 Android Things 上的每个版本都是固定的,不会通过 Play 商店自动更新(有关 Play 服务如何在 [=18= 上运行的更多详细信息,请参阅 Google Services ] 事物)。因此,您需要 select 一个适用于 12.5.20 Play 服务 APK 的 Nearby 客户端库版本。

您也可能在更高版本上取得成功,但 12.0.1 是附近客户端的已知测试版本,具有 Android 事物 1.0.x:

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

错误代码 8050 是 API_CONNECTION_FAILED_ALREADY_IN_USE -- 您可以阅读更多相关信息 here

从本质上讲,Nearby Connections(目前)还不支持多个客户端使用它,因此有一些其他应用程序已经在使用它需要被终止——它很可能是设置您的 Android物联网设备。

添加到 , I'm going to guess that the default launcher is still running and hogging Connections. The IoT launcher 将如下所示:

您可以通过向清单添加 intent-filter 使您的应用成为家庭应用,如下所示 (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>

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

我不确定你有什么 Android Things version/system 图片,但你也可以使用以下 adb 命令之一:

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

或者也许:

adb shell am force-stop com.android.iotlauncher