从应用启动表盘配置 activity

Start watch face configuration activity from app

我已经为表盘构建了一个配置 activity。 Android wear 显示并启动配置 activity fine.

是否可以从配套应用启动配置 activity?

我创建了一个 activity,但无法通过 EXTRA_PEER_ID,Android Wear activity 在开始配置时似乎正在通过 activity.

我是在 How to detect if android device is paired with android wear watch 的帮助下完成的 EXTRA_PEER_ID就是连接的穿戴设备的nodeId,可以通过下面的代码获取。

然后您可以使用 Intent.putExtra(WatchFaceCompanion.EXTRA_PEER_ID, nodeId); 并通过意图传递 id 并开始配置 activity。

代码:

private GoogleApiClient client;
private static final long CONNECTION_TIME_OUT_MS = 1000;

public void checkIfWearableConnected() {

    retrieveDeviceNode(new Callback() {
        @Override
        public void success(String nodeId) {
            Toast.makeText(LaunchActivity.this, "There was at least one wearable found", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void failed(String message) {
            Toast.makeText(LaunchActivity.this, "There are no wearables found", Toast.LENGTH_SHORT).show();
        }
    });

}

private GoogleApiClient getGoogleApiClient(Context context) {
    if (client == null)
        client = new GoogleApiClient.Builder(context)
                .addApi(Wearable.API)
                .build();
    return client;
}

private interface Callback {
    void success(final String nodeId);
    void failed(final String message);
}

private void retrieveDeviceNode(final Callback callback) {
    final GoogleApiClient client = getGoogleApiClient(this);
    new Thread(new Runnable() {

        @Override
        public void run() {
            client.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
            NodeApi.GetConnectedNodesResult result =
                    Wearable.NodeApi.getConnectedNodes(client).await();
            List<Node> nodes = result.getNodes();
            if (nodes.size() > 0) {
                String nodeId = nodes.get(0).getId();
                callback.success(nodeId);
            } else {
                callback.failed("no wearables found");
            }
            client.disconnect();
        }
    }).start();
}