getConnetedNodes在未安装Wear应用程序的情况下命中超时

时间:2016-09-02 11:42:09

标签: android wear-os android-wear-data-api

在尝试检测我们的Android应用的用户是否将Wear设备与其手机配对时,我们致电

// Call Wear API to see whether a device is connected
... nodes = Wearable.NodeApi.getConnectedNodes(client).await(20, TimeUnit.SECONDS);
return nodes.getNodes().size() > 0;

我们刚刚注意到,在某些情况下,这会在返回空节点集合之前阻塞整整20秒,而不是像我们习惯的那样立即返回。 (如果我们取出超时并异步调用,它似乎永远不会解决。)

在进一步检查时,我们发现当用户甚至没有安装Wear应用程序时,似乎会发生这种情况。因此,我们在上面的行前面加上类似

的内容
// Check if the Wear app is installed as we can't have a watch without it
try
{
    getPackageManager()
        .getPackageInfo("com.google.android.wearable.app", PackageManager.GET_META_DATA);
}
catch (PackageManager.NameNotFoundException ex)
{
    return false;
}

这似乎足以满足我们的目的,但它似乎也很可怕:

  • 我们正在使用try / catch进行非异常行为
  • Wear应用程序和Wear API之间的交互似乎没有记录

是否有更合理的方法来检查Wear设备是否已连接而不必担心超时?

0 个答案:

没有答案