【问题标题】:Android wear can´t send message to phoneAndroid Wear 无法向手机发送消息
【发布时间】:2020-06-10 11:19:58
【问题描述】:

我一直关注this tutorial 将消息从 Android Wear 发送到 Android 手机,但它无法正常工作。这是我的代码:

穿戴

从 Minifest 开始,我实现了 google play services 元数据,如下所示:

   <meta-data
        android:name="com.google.android.wearable.standalone"
        android:value="true" />
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

其次,我初始化 GoogleApiClient,如下所示:

googleClient = new GoogleApiClient.Builder(this)
            .addApi(Wearable.API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();

然后,我实现接口所需的所有方法:GoogleApiClient.ConnectionCallbacks 和 GoogleApiClient.OnConnectionFailedListener,像这样:

    @Override
    public void onConnected(Bundle connectionHint) {
        System.out.println("SESSION CONNECTED");
    }

    // Disconnect from the data layer when the Activity stops
    @Override
    protected void onStop() {
        if (null != googleClient && googleClient.isConnected()) {
            googleClient.disconnect();
        }
        super.onStop();
    }

    @Override
    public void onConnectionSuspended(int i) {

    }

   @Override
   protected void onStart() {
      super.onStart();
      googleClient.connect();
   }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        System.out.println("FAILED TO CONNECT: "+connectionResult.getErrorMessage());
    }

最后我实现了将文本发送到手机:

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

问题是它似乎可以工作(当我开始磨损时,我得到了“”SESSION CONNECTED“字符串),但是它找不到任何配对的设备来发送字符串,因为节点列表是空的.会不会是模拟器的问题?手机和穿戴可能都没有同步,所以他们找不到对方。

电话

只是为了展示孔的例子,我还包括电话部分:

Manifest.xml

<service android:name=".utils.ListenerService">
        <intent-filter>
            <action android:name="com.google.android.gms.wearable.BIND_LISTENER"
                tools:ignore="WearableBindListener" />
        </intent-filter>
    </service>

监听服务

public class ListenerService extends WearableListenerService {

@Override
public void onMessageReceived(MessageEvent messageEvent) {

    if (messageEvent.getPath().equals("/message_path")) {
        final String message = new String(messageEvent.getData());
        System.out.println("Message path received on watch is: " + messageEvent.getPath());
        System.out.println("Message received on watch is: " + message);
    }
    else {
        super.onMessageReceived(messageEvent);
    }
}

【问题讨论】:

    标签: android wear-os google-datalayer wearables


    【解决方案1】:

    好吧,没关系,这是模拟器的问题,他们没有同步。只需尝试使用真实设备即可。

    【讨论】:

      【解决方案2】:

      我的问题是手机上的应用程序和手表上的应用程序是用不同的证书签名的,虽然他们有相同的appid

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多