Android 手持设备和穿戴设备收不到消息

2024-04-11

我正在尝试从可穿戴设备向手持设备发送消息,然后从手持设备向可穿戴设备发送响应(两个模块都使用相同的代码和逻辑)。
Gradle:

compile 'com.google.android.support:wearable:2.0.0-alpha2'
compile 'com.google.android.gms:play-services-wearable:9.6.1'

...

classpath 'com.android.tools.build:gradle:2.2.1'
classpath 'com.google.gms:google-services:3.0.0'

Android清单:

    <application>
    ...
        <service android:name=".ReceiverService"
                 android:enabled="true"
                 android:exported="true">
            <intent-filter>
                <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED"/>
                <data android:scheme="wear" android:host="*"/>
            </intent-filter>
        </service>    
    </application>

接收服务:

public class ReceiverService extends WearableListenerService {
    @Override
    public void onMessageReceived(MessageEvent messageEvent) {
        super.onMessageReceived(messageEvent);
        Log.v(TAG, "onMessageReceived: " + messageEvent);
    }
}

消息发送者:

public class MessageSender implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

    private static final String TAG = "_wear_message_sender";
    private final GoogleApiClient mGoogleApiClient;

    private static class InstanceHolder {
        private static final MessageSender sInstance = new MessageSender();
    }

    private MessageSender() {
        mGoogleApiClient = new GoogleApiClient.Builder(WearApp.getInstance().getContext())
                .addApi(Wearable.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
    }

    public static MessageSender getInstance() {
        return InstanceHolder.sInstance;
    }

    public void sendMessage(final String path, final String message) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                if (!mGoogleApiClient.isConnected()) {
                    mGoogleApiClient.blockingConnect(Constants.GOOGLE_API_CLIENT_TIMEOUT_S, TimeUnit.SECONDS);
                }    
                List<Node> nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await().getNodes();
                Log.d(TAG, "Nodes count " + nodes.size());

                for (Node node : nodes) {
                    Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), path, message.getBytes()).setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() {
                        @Override
                        public void onResult(MessageApi.SendMessageResult sendMessageResult) {
                            Log.d(TAG, "sendMessage(" + path + "): " + sendMessageResult.getStatus().isSuccess());
                        }
                    });
                }
                mGoogleApiClient.disconnect();
            }
        }).start();
    }
    ...
}

我得到了这个输出:

D/_wear_message_sender: onConnected: null
D/_wear_message_sender:节点数 1
D/_wear_message_sender: sendMessage(/test): true

我使用了 Moto 360 和模拟器,消息已发送,但手持设备WearableListenerService onMessageReceived()不被调用。反之亦然,我通过手机和可穿戴设备发送了一条消息onMessageReceived不被调用。
我在这里缺少什么?


检查是否applicationID https://plus.google.com/+PetrN%C3%A1levka/posts/deCyoF6ALvV移动和穿戴应用程序的 build.gradle 中的内容是相同的,否则 Android 将不知道应将消息发送到哪个。你可以检查这个所以线程 https://stackoverflow.com/questions/33817622/wearablelistenerservice-onmessagereceived-is-not-called-on-device。还要确保buildTypes部分和signingConfigs两个应用程序中的部分相同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 手持设备和穿戴设备收不到消息 的相关文章

  • 如何对这个字符串进行子串化

    我想得到这个字符串的 4 个部分 String string 10 trillion 896 billion 45 million 56873 我需要的4个部分是 10万亿 8960亿 4500万 和 56873 我所做的是删除所有空格 然
  • 如何在 Android 中保存相机的临时照片?

    在尝试从相机拍照并将其保存到应用程序的缓存文件夹中时 我没有得到任何可见的结果 应用程序不会崩溃 但在 LogCat 上 当我尝试将 ImageView src 字段设置为刚刚获取的文件的 URI 时 我收到此消息 09 17 14 03
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • Android Activity 生命周期函数基础知识

    我正在测试这段代码 它显示活动所处的状态 public class Activity101Activity extends Activity String tag Lifecycle Called when the activity is
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • 我想实现下面的布局,按钮应该在屏幕底部,当惰性列被填充时,按钮不应该出去

    顶部有惰性列 惰性列下方有输入电话号码布局并从电话簿布局添加联系人 我希望当未添加联系人时此布局位于顶部 当我添加大量联系人时输入电话号码并添加电话簿布局中的联系人会随着惰性列滚动并移出屏幕 我不让他们走出屏幕 当接触较多时 它们必须粘在底
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Android:膨胀布局时出现 StackOverFlowError 和 InvokingTargetException

    首先 对不起我的英语 我在膨胀布局时有一个问题 我有一个自定义视图 从 LinearLayout 扩展而来 称为按钮帮助 我在名为的布局上使用该视图加载活动 我的以下代码在所有设备和模拟器上都能完美运行 但具有 QVGA 屏幕 例如 Sam
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分

随机推荐

  • 用原始图像替换蒙版 opencv Python

    我正在尝试用原始图像像素替换使用蒙版找到的对象 我有一个遮罩 在未检测到物体的情况下显示黑色 如果检测到物体则显示白色 然后我在 where 语句中使用该图像 image np where image2 255 255 255 any ax
  • Hibernate:CRUD 通用 DAO

    我的网络应用程序有很多服务表 实体 例如payment methods tax codes province codes etc 每次添加一个新实体时 我都必须编写一个 DAO 问题是 基本上 它们都是相同的 但唯一的区别是实体类本身 我知
  • Android 平台源代码中的断点

    使用 Intelllj idea 我尝试调试 Android 源 API 17 但是当我在平台源中设置断点时 它们在运行时会被忽略 在调试时查看断点 其中有一个十字 并显示一条消息 在类 android view 的第 15 508 行找不
  • Spring - applicationContext.xml 无法打开,因为它不存在

    我有一个 Spring MVC 应用程序 并且与文件 applicationContext xml 结合使用 JUnit 测试时遇到问题 在我的 JUnit 测试类中我写道 final ApplicationContext context
  • 使用 XML 包将 html 表抓取到 R 数据帧中

    如何使用 XML 包抓取 html 表 以维基百科页面为例巴西足球队 http en wikipedia org wiki Brazil national football team 我想在 R 中阅读它并获取 巴西与 FIFA 认可球队对
  • 在 GIT 中处理 Rails db/schema.rb 文件的正确方法是什么?

    我们应该包括schema rb同时致力于 GIT 或者我们应该忽略它 什么是正确的做法 好标准schema rbRails 2 文件在文件顶部的注释块末尾有这样的内容 It s strongly recommended to check t
  • 警告:本机不支持快速启动/快照

    我在使用 android studio 运行我的应用程序时遇到错误 但在此之前它工作正常 直到更新 Android API27 我尝试卸载它但没有任何结果 收到的警告是 模拟器 警告 本机不支持快速启动 快照 A 目前需要CPU UG功能
  • 是否可以使用 TagLibSharp 从 MP3 文件中删除 Lyrics3v2 标签?

    我想知道是否可以删除歌词3v2使用 MP3 文件中的标签类型标签库夏普 https github com mono taglib sharp图书馆 This http id3 org Lyrics3v2文档说块条目以单词 开头歌词开始 并以
  • Android ViewPager:从 URL 下载图像

    我正在尝试使用创建一个图片库ViewPager 我找到了几个例子并且我已经让它们全部工作了 示例没有展示的一件事是如何使用从 URL 下载的图像填充 ViewPager 所有教程都有图像Drawables文件夹或 SD 卡上 有谁知道 Vi
  • 使用 SF 库读取 GeoJSON 文件?

    我一天前刚开始使用 R 我正在尝试使用 SF 库读取 geojson 文件 但我不确定正确的方法是什么 library dplyr library sf geo lt system file my path zones geojson pa
  • 由于函数 asprintf 无法编译程序

    找到此代码 需要停止将戴尔笔记本电脑中的 CPU 节流至 20 这是由于电源适配器无法被计算机识别而发生的 尝试在 Kubuntu 上编译并得到以下结果 warning implicit declaration of function as
  • 继续处理结果的 Null 值(Nodejs、Puppeteer)

    我刚刚开始使用 Puppeteer Headless Chrome 和 Nodejs 我正在抓取一些测试站点 当所有值都存在时 一切都很好 但如果该值丢失 我会收到如下错误 Cannot read property src of null
  • Microsoft Azure Graph API下载项附件内容

    当我在office365网页浏览器页面中打开电子邮件时 有一个选项可以下载该电子邮件的附件内容项目附件 使用 Microsoft Outlook 将另一封邮件附加到当前邮件 eml 文件 内容类型 RFC 822 但是 当我尝试通过 Gra
  • 监控 Spring Embedded Tomcat 指标

    我想监控 Spring Boot 服务中嵌入的 Tomcat Spring 本身为我提供了一些会话使用统计信息 但我需要有关底层线程池的其他信息 如活动连接 队列长度等 我搜索了注册的bean 但找不到使用的线程池 关于如何检索该信息有什么
  • PHP:如何检查一年中的季节并相应地设置类别

    我有一个网站 它在标题区域使用 4 种不同的背景图像 这些图像在视觉上对应于耳朵的季节 夏季 秋季等 对于夏季时间框架 我使用一张图像 对于秋季时间框架 使用另一张图像 依此类推 问题是 一旦一年中的季节发生变化 我就必须手动更改这些图像
  • 使用office.js进行office加载项开发时,无法在word文档的书签中插入文本

    我正在开发一个 word 插件 主要任务是使用数据库中的数据填充文档中的书签 在 office js 中 我发现书签可以作为范围对象进行访问 并且我正在使用 rangeObject insertText text insertLocatio
  • wpf c# 按钮等待按钮按下

    好吧 我是编码初学者 所以我想做的是按钮谁会等待用户单击多个其他按钮之一以继续 void Mainbutton the program run throw so method Wait for the user to choose one
  • 了解 htaccess 文件匹配代码

    我正在尝试将 drupal 安装在我的 bluehost 托管网站的子目录中 这是一个巨大的痛苦 我认为 htaccess 中的以下几行是问题所在 当我当前导航到 mysite com subdir install php 时 出现 403
  • SML 中的 'a 和 ''a 有什么区别?

    例如 fun example a a list list a 将有以下签名 a list gt a list 如果我定义不同但内容相同怎么办 例如 fun example a a list list a 它的签名是 a list gt a
  • Android 手持设备和穿戴设备收不到消息

    我正在尝试从可穿戴设备向手持设备发送消息 然后从手持设备向可穿戴设备发送响应 两个模块都使用相同的代码和逻辑 Gradle compile com google android support wearable 2 0 0 alpha2 c