wear-os - 可穿戴设备未收到消息

标签 wear-os

我成功地从手持设备发送了消息,但可穿戴设备未收到消息:

我让我的掌上电脑在此处发送消息:

 @Override
public void onConnected(Bundle arg0) {
    new SendToDataLayerThread(IS_PAID_VALUE, String.valueOf(Constants.PackageProperties.IS_PAID)).start();
}


private class SendToDataLayerThread extends Thread {
    String path;
    String message;

    // Constructor to send a message to the data layer
    SendToDataLayerThread(String p, String msg) {
        path = p;
        message = msg;
    }

    public void run() {
        NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
        for (Node node : nodes.getNodes()) {
            MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), path, message.getBytes()).await();
            if (result.getStatus().isSuccess()) {
                Log.v("myTag", "Message: {" + message + "} sent to: " + node.getDisplayName());
            }
            else {
                // Log an error
                Log.v("myTag", "ERROR: failed to send Message");
            }
        }
    }
}


 public class ListenerService extends WearableListenerService
        implements GoogleApiClient.ConnectionCallbacks,
        GoogleApiClient.OnConnectionFailedListener {

    private static final String IS_PAID_VALUE = "/is-paid-value";

    private GoogleApiClient mGoogleApiClient;

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "onCreate");
        mBroadcastManager = LocalBroadcastManager.getInstance(getApplicationContext());

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Wearable.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
        try {
            mGoogleApiClient.connect();
        } catch (Exception e) {
            Log.d(TAG, "onCreate: mGoogleApiClient.connect exception: " + e);
        }
    }

    @Override
    public void onMessageReceived(MessageEvent messageEvent) {
        Log.d("#####", "onMessageReceived: " + messageEvent);
        if (messageEvent.getPath().equals(IS_PAID_VALUE)) {
            String isPaid = new String(messageEvent.getData());
            Utilities.PackageProperties pp = new Utilities.PackageProperties();
            pp.setIsPaid(Boolean.parseBoolean(isPaid));
        }
    }

}

我从来没有在监听器中输入 onMessageReceived 。我已在 list 中声明它:

最佳答案

我在开发可穿戴设备时遇到了非常类似的问题。就我而言,即使从可穿戴设备成功发送消息,我也无法在移动设备上接收任何消息。

在 AndroidManifest、build.gradle 和 yada yada yada 中设置所有内容(相同的包名称、applicationId、权限等)后,我发现我在移动设备上的应用程序有多种构建类型和风格。 所以......我设法解决了这个问题,只需在可穿戴设备上配置口味和构建类型即可。 之后,我可以在两个设备之间成功发送和接收消息。

希望对您有帮助。干杯!

关于wear-os - 可穿戴设备未收到消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27722851/

相关文章:

android - Android Wear 2.0 上的曲面布局

android - CapabilityClient 返回 null

安卓工作室错误 : missing feature: WATCH

android - Wear 模拟器显示手持 Activity 启动器类

android - 使用 Wea​​r OS Android 拍照

android - 使用 Ubuntu 14.04 在 ASUS ZenWatch 2 上调试 Android Wear 应用程序

android - 偶尔延迟 10 秒开始 Activity

Android wear 不显示通知

android - 如何在 Android Wear 中为 2D Pickers 添加页面点?

java - 将 DataMap 转换为字符串或字符串数​​组