2

我创建了类“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();

然后只是更新我的共享偏好?

4

0 回答 0