【发布时间】:2015-07-09 17:41:36
【问题描述】:
我正在编写一个 Android Wear 应用,我想让 Wear 设备在点击按钮时在手机上启动一个 Intent。
为此,我首先像这样设置到 GoogleApiClient 的连接
googleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
googleApiClient.connect();
然后单击按钮,运行 sendMessage 函数。这是函数
private void sendMessage(){
if(mNode != null && googleApiClient != null && googleApiClient.isConnected()){
Wearable.MessageApi.sendMessage(
googleApiClient, mNode.getId(),HELLO_WORLD_WEAR_PATH, null).setResultCallback(
new ResultCallback<MessageApi.SendMessageResult>() {
@Override
public void onResult(MessageApi.SendMessageResult sendMessageResult) {
if(!sendMessageResult.getStatus().isSuccess()){
Log.e("TAG", "Failed to send message with status code: " + sendMessageResult.getStatus().getStatusCode());
}
else{
Log.e("TAG", "Success");
}
}
}
);
}
else {
Log.e("TAG","No nodes" + mNode);
}
}
问题是函数进入了 sendMessage 的 else 语句,这意味着 mNode 为空。 mNode 是 Node 类型的变量。
要获取节点,我有这个功能
private void resolveNode() {
Wearable.NodeApi.getConnectedNodes(googleApiClient).setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
@Override
public void onResult(NodeApi.GetConnectedNodesResult nodes) {
for (Node node : nodes.getNodes()) {
mNode = node;
}
}
});
}
我已将手机与 Android Studio 中的 Android Wear 虚拟设备连接起来。
我在这里做错了什么?
【问题讨论】:
标签: android wear-os google-api-client