RxAndroidBle:设置通知,写入特征并等待通知继续

2023-12-20

我在用Polidea 的 RxAndroidBle 库 https://github.com/Polidea/RxAndroidBle与我的 Android 应用程序中的设备进行通信。

我对反应式编程非常陌生,所以我无法弄清楚如何执行以下操作:

  1. 在一项特征(特征 A)中设置通知。
  2. 通知设置完成后,写入另一个特征(特征 B)。这将触发来自特征 A 的通知。
  3. 当写操作完成后,等待特性A中的Notification的到来。
  4. 在应用程序的不同部分多次重复相同的步骤(1 到 3)。

我见过这个相关答案 https://stackoverflow.com/a/38919653/10648865,但它是使用库的第一个版本完成的,我不知道如何使用新版本来完成它。

Thanks.


我最终自己弄清楚了。这是一种在特征中设置指示或通知的方法,然后将一些字节写入另一个特征并返回Observable<String>发出的byte[]解析为十六进制String在通知/指示上阅读的内容。

希望它可以帮助其他人在 RxJava2 中寻找此解决方案。

private Observable<String> writeAndReadOnNotification(UUID writeTo, UUID readOn,
                                                      String hexString,
                                                      boolean isIndication,
                                                      RxBleConnection rxBleConnection) {
    Observable<Observable<byte[]>> notifObservable =
            isIndication ?
                    rxBleConnection.setupIndication(readOn) :
                    rxBleConnection.setupNotification(readOn);
    return notifObservable.flatMap(
            (notificationObservable) -> Observable.combineLatest(
                    rxBleConnection.writeCharacteristic(writeTo, hexToBytes(hexString)).toObservable(),
                    notificationObservable.take(1),
                    (writtenBytes, responseBytes) -> bytesToHex(responseBytes)
            )
    ).take(1)
            .observeOn(AndroidSchedulers.mainThread())
            .doOnError(this::throwException);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RxAndroidBle:设置通知,写入特征并等待通知继续 的相关文章

  • 对话框上的 EditText 不返回任何文本

    我太累了 找不到错误 我没有发现任何错误 但我没有从 editText 收到任何文本 请看下面的代码 活动密码 xml
  • 使用库来维护免费/付费的应用程序版本

    维护免费 付费应用程序版本的共识似乎是使用库 并从每个活动中设置一个标志 以从代码库中获取不同的功能 这有多安全 据我了解 一个人可以root他们的手机 获取APK 并且可以对其进行反编译 即使代码被混淆 也不难看出该应用程序是带有标志的包
  • Retrofit-2 内容类型问题

    我的 Api 接受 Content Type application json 作为标头 我按照改造文档中所述完美设置了标题 Headers Content Type application json POST user classes C
  • 如何从一个代码库创建多个 Android 应用

    我有一个 Android 代码库 它使用带有设置的 API 来获取多个应用程序的不同数据 所有应用程序都使用相同的代码库 但进行一两个设计调整 那么如何重用主代码库而不必每次都复制整个 Android 项目呢 iPhone 在同一个项目中使
  • Youtube 退出全屏模式 TextView 可见性问题

    我正在全屏模式下播放视频 当我单击后退按钮时 我可以退出全屏模式 但无法显示我在全屏情况下隐藏的 TextView 要在全屏模式下隐藏 textView 我使用以下代码 Override public void onInitializati
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • 应用内结算错误

    我的 UNMANAGED 应用内购买无法正常工作 在它完美运行之前 我可以使用测试帐户成功购买 但它突然不起作用了 因为我记得我对商家帐户所做的只是添加更多 2 4 个测试帐户 添加后 我的应用内购买将不起作用 所以我更新了公钥并上传了一个
  • 尝试在模拟器上安装第二个 flutter 应用程序时出错

    我创建了一个简单的 flutter 应用程序并在 android 模拟器上运行它 效果还不错 现在我创建了另一个 当我尝试在模拟器上运行它时 我得到 Error ADB exited with exit code 1 adb failed
  • Android Studio更新到1.5后Gradle错误

    今天我已将 Android Studio 更新到 v1 5 我的 libgdx 项目在这次更新之前运行良好 现在我收到此错误消息 Error Unable to load class org gradle mvn3 org sonatype
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • 无法获取 Facebook 传入请求

    我正在尝试在我的 Facebook android 游戏应用程序中实现发送数据并接受该数据 我正在关注https developers facebook com docs android send requests notification
  • Android Studio IDE 上的“文本/设计”选项卡缺少新的 Android 项目

    如何在创建新项目期间自动创建的 Activity main xml 文件的 src main res layout 文件夹中启用文本 设计选项卡 如果我右键单击并在所述文件夹上创建 xml 文件 则设计 文本选项卡存在 有什么建议吗 谢谢
  • Android - 如何更改 TimePicker 中的文本颜色?

    我正在使用 TimePicker 到 LinearLayout 中 背景颜色 黑色 但是 我看不到 TimePicker 中的数字 并且我需要在布局中将背景颜色设置为黑色 如何更改 TimePicker 中的 textColor 我已经尝试
  • 在Android Studio中更改项目主题?

    我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
  • onBackPressed 隐藏 不破坏 Activity

    我知道如何取消后退按键 以便活动 主窗口保持可见 public void onBackPressed return 我的目标是隐藏该活动 但是 在没有完成它的情况下 您如何在 onBackPressed 事件中做到这一点 即我想达到 onP
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • Android 自定义警报对话框中的 OnClickListener

    我是一个自学成才的初学者 感谢耐心 谢谢 在 Eclipse 中 我使用自己的 xml 文件 custom dialog 创建了一个自定义警报对话框 称为 usernamealert 如果用户尚未输入用户名 即 username lengt
  • Android:解析 XML 数据的最佳解析器 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开发一个应用程序 其中我第一次要解析来自远程服务器的 xml 文件中的数据 但我无法选择哪个解析器是有效的或最适合解析的 因为我知道主要有
  • 在没有 Wifi 的情况下获取 Android 设备的 MAC 地址

    如何获取没有 Wifi 接口的 Android 设备 例如 Android 模拟器 的网络接口的 MAC 地址 通过WifiManager返回获取的WifiInfonull EDIT 更清楚地说 我必须与本地网络上的现有网络协议 不是我设计

随机推荐

  • 如何在IntelliJ IDEA中选择配置文件?

    当我打开 Spring 配置文件并下拉选择配置文件时 为什么 IntelliJ IDEA 会打开一条消息 如果我选择关闭链接 为什么它不再出现 当您在配置文件弹出窗口中单击 关闭 时 它会更改设置并禁用所有 spring 上下文的面板 因此
  • sympy.plotting.plot 奇怪的 xlabel 位置

    当在 sympy 的绘图语句中将 xlabel 设置为字符串值时 标签将放置在图形的最右侧 如果程序中未设置标签 并且我单击复选标记并在那里设置标签 则它位于 X 轴的中间 这是一个例子 from sympy import sin from
  • 使用 PHP 客户端发布 Google+ 时刻时出现 401 未经授权的访问

    我试图使用 API 在 google 中发布一段时间 创建一个简单的示例 但收到 401 错误 我正在关注 Silvano Luciani 的脚步https plus google com SilvanoLuciani posts 2kMX
  • Angular 双花括号内的函数调用

    这是我在 Kendo UI 中的热图代码 div params compare h percentChange h current unit div Its works perfectly fine what the h current u
  • 通过 AJAX 传递图像[重复]

    这个问题在这里已经有答案了 基本上我想在提交表单时使用ajax传递图像文件并检索图像并通过电子邮件将其作为附件文件发送 这是form
  • 将 org.dom4j.Document 转换为 org.w3c.dom.Document 和 XML 签名时出现问题

    我有一些已经使用的课程DOM4J http dom4j sourceforge net 读取 XML 文件并提供 数据的 getter 方法 现在 我需要添加检查 XML 数字的可能性 签名 使用 org w3c dom 并遵循http j
  • GRPC 服务器响应延迟

    首先 是否有人对 GRPC 客户端 服务器实现与 websocket protobuf 客户端 服务器实现之间的吞吐量 延迟进行了性能比较 或者至少是类似的东西 为了实现这一目标 我正在尝试示例 JAVA helloworld grpc 客
  • Android 上现在已弃用 HttpEntity,有什么替代方案吗?

    随着 Android 5 1 的发布 所有 Apache http 内容似乎都已被弃用 看文档是没有用的 他们都说 This class was deprecated in API level 22 Please use openConne
  • 带有背景图像且无文本的 XHTML 锚链接

    是否有可能有锚链接 里面没有文字 有背景图像和固定尺寸 并且仍然有利于搜索引擎优化 CSS 示例 a display block width 50px height 20px background image url images back
  • HttpClient 无法在 Android 上运行

    我正在制作 Xamarin Forms 应用程序 它应该从 api 获取 JSON 然后允许显示它 到目前为止我的代码 public async void jsonDownload connect await downloadData pu
  • 用 C 语言写入十六进制(字节)

    我必须将十六进制字节写入文件 但遇到问题 例如 如果我有 unsigned char a 0x0 我使用 fwrite 写入文件 FILE fp fopen file txt wb fwrite a sizeof unsigned char
  • 为什么不能像 C 中的指针一样对待数组?

    我在 SO 上经常看到这个问题 也许没有那么多话 但是对于数组与指针的不同之处 人们一次又一次地感到困惑 所以我想我应该花点时间来问答一些关于这个问题的问题 出于本次问答的目的 我们将假设使用 32 位系统 并且已声明以下内容 char p
  • 在 rebase -i 期间重写提交消息时如何使 git show diff ?

    我总是用git commit verbose 是否有一个等效的选项 设置可以让 git 在我重写提交消息时显示差异git rebase interactive 根据您在评论中的回答 执行git diff HEAD 不会帮助你 除非你只想重写
  • C#时区计算问题

    我有一个服务器应用程序正在处理不同时区的贷款 服务器使用 UTC 运行 计划任务将在当地时间 08 00 在服务器上启动一个进程 并选择该时区的贷款进行处理 服务器必须检查每笔贷款 然后为某些贷款设置一个超时 该超时将在特定的当地时间 根据
  • Pug 语法中的三元运算符

    是否可以在 Pug 代码中使用三元运算符 我尝试让它发挥作用 Pug file var disabled true input type checkbox disabled disabled null HTML 结果
  • 如何使用 Python 从 XML 中删除元素

    我被 XML 和 Python 困住了 任务很简单 但我至今无法解决 而且花了那么长时间 我来这里是为了寻求如何用几行代码解决这个问题的建议 感谢您在遍历树时提供的任何帮助 我总是得到太多或太少的元素 元素可以无限制地嵌套 给出的例子只是一
  • iOS - QuickLook - 如何在没有 UIScrollView 的情况下在 QuickLook 中打开对象

    有人可以向我指出一个使用 QuickLook 打开 最好但不一定是 pdf 文件而不使用 UITableView 的资源吗 我确实有使用 QuickLook 的示例 但它使用了我需要摆脱的列表视图 http robsprogramknowl
  • Django 一个应用程序一个模型多个数据库

    我是 django webapp 开发的新手 并且遇到了一个问题 我创建了 1 个应用程序和 1 个模型 以使用 1 个表单将数据插入数据库 我将为此使用多个数据库 每个数据库将有 1 个具有相同结构的表 目前 现在我的问题是 如何为多个数
  • 以其他用户身份登录时丢失会话/cookie

    我正在建设dnn允许登录用户以另一个用户身份登录的模块 但我这里有一些有线问题 这是我注销当前用户并以另一个用户身份登录的方法 UserInfo userInfo UserController GetUserById portalId us
  • RxAndroidBle:设置通知,写入特征并等待通知继续

    我在用Polidea 的 RxAndroidBle 库 https github com Polidea RxAndroidBle与我的 Android 应用程序中的设备进行通信 我对反应式编程非常陌生 所以我无法弄清楚如何执行以下操作 在