我创建了课程" 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();
然后只更新我的共享偏好?