我创建了类“CommunicationService”,它扩展了 WearableListenerService。我通过以下操作修改了清单并添加了服务:
android:name="com.google.android.gms.wearable.BIND_LISTENER"
我重写了 onPeerDisconnected 和 onPeerConnected 方法,如下所示:
@Override
public void onPeerDisconnected(Node peer) {
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(ON_PEER_CONNECT, false);
editor.commit();
super.onPeerDisconnected(peer);
}
@Override
public void onPeerConnected(Node peer) {
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(ON_PEER_CONNECT, true);
editor.commit();
super.onPeerConnected(peer);
}
我在连接时存储 true,在断开连接时存储 false 到我的共享首选项。
在其他类中,我像这样调用此服务的方法。
if (prefs.getBoolean(CommunicationService.ON_PEER_CONNECT, false))
CommunicationService.sendDataToWearable();
else
Toast.makeText(context, "There is no connection to wearable. Please, try reconnecting!", Toast.LENGTH_SHORT).show();
所以问题是,当我运行我的应用程序并连接到手表时,一切正常,当我手动禁用蓝牙并重试时,一切正常,因此 Toast 显示有关连接错误的警告。
但是当我离开手表并回到它时(我失去了连接,然后当我足够近时将它恢复)它会显示 Toast 警告连接错误,但在 Android Wear 应用程序中它说可穿戴设备已连接到手持设备.
所以我猜我的服务有问题,它没有以正确的方式更新我的共享首选项。
我也不知道在服务中我应该做什么 onCreate 方法。我应该检查是否有任何与此相关的节点:
List<Node> connectedNodes =
Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await().getNodes();
然后只是更新我的共享偏好?