当Pebble连接/断开时,Pebble手表具有全局发送的Intent.这允许手机应用程序知道手表是否已连接.我搜索过,但我无法找到有关Android Wear类似功能的信息.怎么知道可穿戴设备是否连接到手机?有可能收到像Pebble这样的活动吗?谢谢
您是否尝试过NodeApi?getConnectedNodes
获取此设备当前连接的节点列表.
或者addListener(GoogleApiClient client, NodeApi.NodeListener listener)哪个
注册侦听器以接收所有节点事件.
然后你可以使用回调 NodeApi.NodeListener
onPeerConnected(Node peer) and onPeerDisconnected(Node peer)
Run Code Online (Sandbox Code Playgroud)
小智 3
您可以通过扩展 WearableListenerService 并重写 onConnectedNodes() 方法轻松地做到这一点。
穿戴面
public class DisconnectListenerService extends WearableListenerService implements GoogleApiClient.ConnectionCallbacks {
/* the capability that the phone app would provide */
private static final String CONNECTION_STATUS_CAPABILITY_NAME = "is_connection_lost";
private GoogleApiClient mGoogleApiClient;
@Override
public void onCreate() {
super.onCreate();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.build();
}
@Override
public void onConnectedNodes(List<Node> connectedNodes) {
if (mGoogleApiClient.isConnected()) {
updateStatus();
} else if (!mGoogleApiClient.isConnecting()) {
mGoogleApiClient.connect();
}
}
private void updateStatus() {
Wearable.CapabilityApi.getCapability(
mGoogleApiClient, CONNECTION_STATUS_CAPABILITY_NAME,
CapabilityApi.FILTER_REACHABLE).setResultCallback(
new ResultCallback<CapabilityApi.GetCapabilityResult>() {
@Override
public void onResult(CapabilityApi.GetCapabilityResult result) {
if (result.getStatus().isSuccess()) {
updateConnectionCapability(result.getCapability());
} else {
Log.e(TAG, "Failed to get capabilities, " + "status: " + result.getStatus().getStatusMessage());
}
}
});
}
private void updateConnectionCapability(CapabilityInfo capabilityInfo) {
Set<Node> connectedNodes = capabilityInfo.getNodes();
if (connectedNodes.isEmpty()) {
// The connection is lost !
} else {
for (Node node : connectedNodes) {
if (node.isNearby()) {
// The connection is OK !
}
}
}
}
@Override
public void onConnected(Bundle bundle) {
updateStatus();
}
@Override
public void onConnectionSuspended(int cause) {
}
@Override
public void onDestroy() {
if (mGoogleApiClient.isConnected() || mGoogleApiClient.isConnecting()) {
mGoogleApiClient.disconnect();
}
super.onDestroy();
}
}
Run Code Online (Sandbox Code Playgroud)
手机端
在values/目录中创建一个名为wear.xml的xml文件
<resources>
<string-array name="android_wear_capabilities">
<item>is_connection_lost</item>
</string-array>
</resources>
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看我在Stack Overflow Question中的解决方案
| 归档时间: |
|
| 查看次数: |
2451 次 |
| 最近记录: |