android app 与android wear 通过MessageApi 通讯
来源:互联网 发布:知乎发帖被删 编辑:程序博客网 时间:2024/05/17 03:49
类容:手持端app 点击按钮,手表端显示点击次数
1. 设备间通过GoogleApiClient建立连接,若需监听连接是否成功,需
继承GoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener,
此处采用MessageApi发送,继承DataApi.DataListener,MessageApi.MessageListener监听。
mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Wearable.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build();2. 在Activity 中启动连接
@Override protected void onStart() { //start connect the node you want mGoogleApiClient.connect(); super.onStart(); }
3.获取连接的设备
/** * Get Nodes that connected with phone,such as your android watch * this method can't be used in UI thread * @return nodes */ private List<Node> getNodes() { ArrayList<Node> results= new ArrayList<Node>(); //get all connected nodes NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await(); for (Node node : nodes.getNodes()) { results.add(node); } return results; }4. 若连接建立成功,会调用onConnected方法
@Override public void onConnected(Bundle bundle) { Log.d(TAG, "onConnected:" + bundle); //register client listener Wearable.DataApi.addListener(mGoogleApiClient, this); new Thread(new Runnable() { @Override public void run() { mConnectedNodes = getNodes(); if (mConnectedNodes.size() > 0) { for (Node node : mConnectedNodes) { Log.d(TAG, "Connected Node->ID:" +node.getId()+" Name:"+node.getDisplayName()); } } else { Log.d(TAG, "No Connected Nodes"); } } }).start(); }
5.发送端发送消息
@Override public void onClick(View v) { mClickTimes++; mButton.setText(String.valueOf(mClickTimes)); if ((null != mConnectedNodes)&&(mConnectedNodes.size()>0)) { //the message send to wear byte[] sendDatas = ("Alvin:"+mClickTimes).getBytes(); //deliver message Wearable.MessageApi.sendMessage(mGoogleApiClient,mConnectedNodes.get(0).getId(),WEARABLE_CLICK_PATH,sendDatas) .setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() { @Override public void onResult(MessageApi.SendMessageResult sendMessageResult) { if (!sendMessageResult.getStatus().isSuccess()) { Log.d(TAG, "sendMessage Fail"); } else { Log.d(TAG, "sendMessage Success"); } } }); } }6. 接收端注册接收事件,否则接收不到消息
@Override public void onConnected(Bundle bundle) { Log.d(TAG, "onConnected:" + bundle); Wearable.DataApi.addListener(mGoogleApiClient, this); //don't forget to register message listener Wearable.MessageApi.addListener(mGoogleApiClient, this); mTextView.setText("Connect Success"); }7. 处理接受的数据
@Override public void onMessageReceived(MessageEvent messageEvent) { Log.d(TAG, "MessageEvent"); if (messageEvent.getPath().equals(WEARABLE_CLICK_PATH)) { String receiver = new String(messageEvent.getData()); mTextView.setText(receiver); } }
完整代码,请在此处下载: 点击打开链接
具体用法说明参见下述网站:
1. https://developers.google.com/android/
2. http://developer.android.com/intl/zh-cn/wear/index.html
0 0
- android app 与android wear 通过MessageApi 通讯
- android wear开发之MessageApi.MessageListener的注册与移除
- Android Wear通过蓝牙调试
- Android Wear - App Structure for Android Wear(应用结构)
- Android Wear
- 【Android Wear】
- android wear那些事--通过蓝牙调试
- Android与PC通过USB通讯
- Android与PC通过USB通讯
- Android与PC通过USB通讯
- android 与 linux 通过usb通讯方案
- Android wear编程与开发(一)
- Android wear编程与开发(二)
- How to develop and package Android Wear App using Eclips
- android app与蓝牙设备之间连接与通讯
- Android Wear 设计原则
- Android Wear 快速开始
- Android Wear Preview - UI
- 计算文字的宽度(动态)
- linux之sed用法
- SpringMVC配置详解
- 集成运算放大器的简要介绍
- 数据库Sharding的基本思想和切分策略
- android app 与android wear 通过MessageApi 通讯
- 设计模式 策略模式 以角色游戏为背景
- 解决加载本地res图片oom
- poj3177 Redundant Paths
- 事件总结
- 关于百度提交版本需要继承BaiduUpdate问题
- toshiba q300 vs samsung 850evo
- md5加密
- PhoneGap入门实战