首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Messages识别消息

使用Messages识别消息
EN

Stack Overflow用户
提问于 2015-04-27 18:14:32
回答 1查看 248关注 0票数 0

我可能有一个简单的问题,但我很难回答。对于我的安卓磨损应用程序,我有两个传感器工作(step计数器和心碎).The磨损应用程序,然后将这些值发送回移动应用程序。我使用消息API发送它们。我的步骤计数sendMessage()和heartrate ()方法看起来是一样的。这是我心痛的sendMessage方法。

代码语言:javascript
复制
private void sendMessageToHandheld(final String message) {

        if (mGoogleApiClient == null)
            return;

        Log.d(LOG_TAG,"sending a message to handheld: "+message);

        // use the api client to send the heartbeat value to our handheld
        final PendingResult<NodeApi.GetConnectedNodesResult> nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient);
        nodes.setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
            @Override
            public void onResult(NodeApi.GetConnectedNodesResult result) {
                final List<Node> nodes = result.getNodes();
                if (nodes != null) {
                    for (int i=0; i<nodes.size(); i++) {
                        final Node node = nodes.get(i);
                        Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), message, bytes);
                    }
                }
            }
        });

    }

问题是我在手机上只使用了一种messageReceived方法。因此,我无法与进场的步数或心痛的价值区分开来。

代码语言:javascript
复制
@Override
    public void onMessageReceived(MessageEvent messageEvent) {
        super.onMessageReceived(messageEvent);
        Log.d(LOG_TAG, "received a message from wear: " + messageEvent.getPath());
        if (messageEvent.getPath().contains("HEARTBEAT")){
            // save the new heartbeat value
            currentValue = Integer.parseInt(messageEvent.getPath());
            if(handler!=null) {
                // if a handler is registered, send the value as new message
                Log.d(LOG_TAG, "received a heartbeat message from wear: " + messageEvent.getPath());
                handler.sendEmptyMessage(currentValue);
            }
        }
        else {
            // save the new steps value
            currentStepValue = Integer.parseInt(messageEvent.getPath());
            if (handler != null) {
                // if a handler is registered, send the value as new message
                Log.d(LOG_TAG, "received a step message from wear: " + messageEvent.getPath());
                handler.sendEmptyMessage(currentStepValue);
            }
        }

我尝试将一个字节数组作为标志传入心形sendMessage()和其他字符串,这样我就可以区分值,但没有运气。有人知道最好的办法是什么吗?

任何帮助都将不胜感激。

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-27 19:28:35

您似乎在path属性中发送数据。这不是正确使用此参数。

让我们看一看[MessageApi.sendMessage(GoogleApiClient client, String nodeId, String path, byte[] data](https://developer.android.com/reference/com/google/android/gms/wearable/MessageApi.html#sendMessage(com.google.android.gms.common.api.GoogleApiClient,%20java.lang.String,%20java.lang.String,%20byte[]%29)方法。

您想要做的是使用String path为您的消息提供标识符,例如,在您的示例中,将是step_counterheartbeat。这样,当您收到消息时,您可以在另一边识别它。

传感器数据应进入data字段。您可以将其放在原处,但更好的方法是创建一个DataMap,然后将其序列化为byte[]。这样,以后您就可以轻松地丰富数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29903082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档