Android 蓝牙socket非阻塞通信教程

2023-11-21

我正在寻找 Android 上的蓝牙示例代码来进行非阻塞套接字通信。

我找到了几个例子,例如BluetoothChat或BluetoothSocket.java,但没有一个是non-blocking socket communication.

ps 自动非阻塞是否意味着必须是异步的?我认为实际上不是 - 它不一样,我假设我可以进行带有超时的同步套接字通信。这就是我正在寻找的例子......

非常感谢


看起来答案几乎是你不能

然而,通过一点线程魔法,你可以让你的系统按照你想要的方式工作

   BluetoothSocketListener bsl = new BluetoothSocketListener(socket, handler, messageText);
    Thread messageListener = new Thread(bsl);
    messageListener.start();

留言系统

 private class MessagePoster implements Runnable {
    private TextView textView;
    private String message;

    public MessagePoster(TextView textView, String message) {
      this.textView = textView;
      this.message = message;
    }

    public void run() {
      textView.setText(message);
    }     
  }

套接字侦听器

private class BluetoothSocketListener implements Runnable {

  private BluetoothSocket socket;
  private TextView textView;
  private Handler handler;

  public BluetoothSocketListener(BluetoothSocket socket, 
                                 Handler handler, TextView textView) {
    this.socket = socket;
    this.textView = textView;
    this.handler = handler;
  }

public void run() {
  int bufferSize = 1024;
  byte[] buffer = new byte[bufferSize];      
  try {
    InputStream instream = socket.getInputStream();
    int bytesRead = -1;
    String message = "";
    while (true) {
      message = "";
      bytesRead = instream.read(buffer);
      if (bytesRead != -1) {
        while ((bytesRead==bufferSize)&&(buffer[bufferSize-1] != 0)) {
          message = message + new String(buffer, 0, bytesRead);
          bytesRead = instream.read(buffer);
        }
        message = message + new String(buffer, 0, bytesRead - 1); 

        handler.post(new MessagePoster(textView, message));              
        socket.getInputStream();
      }
    }
  } catch (IOException e) {
    Log.d("BLUETOOTH_COMMS", e.getMessage());
  } 
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 蓝牙socket非阻塞通信教程 的相关文章

  • Android:使用 OAuth 访问 google 任务时出现问题

    由于 google 任务没有公共 api 我想编写解决方法并像浏览器一样请求数据 然后解析结果以进一步显示 为了访问数据 我使用 google 实现了 OAuth 身份验证来访问此 url https mail google com htt
  • Manifest Merger工具:替换失败

    我正在使用一个使用自己的 android theme 的库 因此在构建时收到以下错误 错误 55 9 任务 contacit processDebugManifest 执行失败 清单合并失败 AndroidManifest xml 中的属性
  • 从 Android 代码设置的 SECRET_CODE

    我知道如何使用清单文件中的秘密代码 它与此源代码配合良好
  • 安卓定位不准确

    我正在尝试获取当前用户的位置 我试图重构我的代码以获得更好的结果 但我只是不断得到关于准确度的荒谬位置 它在 900 600 米之间 如何才能得到更好的结果 使其精度达到50m以内 这是我的代码 package com agam mapsl
  • 播放 SoundCloud 曲目

    我可以在 Android 应用程序中播放 SoundCloud 中的曲目吗 我正在尝试这段代码 但它不起作用 String res https api soundcloud com tracks 84973999 stream client
  • 从 React Native Js 代码调用 Android Native UI 组件方法

    我创建了一个 CustomView SignatureView java 它扩展了 LinearLayout 以捕获 Android Native 中的签名 并创建了SignatureCapturePackage java和Signatur
  • 如何在android线性布局上获得阴影? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在android中为View设置阴影 https stackoverflow com questions 4406524 how to set shadow to a view in androi
  • 如何为发布而不是调试创建密钥库?扑

    我按照使用此网站部署 flutter 的步骤进行操作https flutter io android release https flutter io android release 当我运行 flutter build apk 时出现此错
  • 调整浮动操作按钮的图标大小(fab)

    The new floating action button should be 56dp x 56dp and the icon inside it should be 24dp x 24dp So the space between i
  • 如何在android中设置权限WRITE_SECURE_SETTINGS? [复制]

    这个问题在这里已经有答案了 我正在尝试启用 4 0 以上的辅助功能服务设置 但它显示异常 即 引起原因 java lang SecurityException 权限拒绝 写入安全设置需要 android permission WRITE S
  • 如何在 Android 模块中使用 FirebaseAuth

    我正在开发一个聊天库 我想在其中显示登录用户的对话 制作该库的原因是我想将其集成到多个项目中 我现在面临的问题是FirebaseAuth表示用户尚未登录 FirebaseAuth getInstance mFirebaseApp getCu
  • 获取手机的 z 轴和磁北极(而不是 y 轴)之间的角度

    我知道如何使用 getOrientation 方法获取手机 y 轴和磁北之间的方向角 如此处所述https developer android com guide topics sensors sensors position https
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 在旋转时从错误的资源文件夹中提取可绘制对象

    在这里拉我的头发 因此 我正在使用一个具有多种类型的可绘制对象的应用程序 并且它们的结构如下 res Portrait resources drawable mdpi drawable hdpi drawable xhdpi Landsca
  • Android 后台服务示例,具有交互式调用方法

    我不是 Android 方面的专家 我正在寻找一个 Android 应用程序的示例 该应用程序使用一个服务 其中有真正的功能方法 或者换句话说 一个服务可以用来做什么 我们什么时候需要它 超越简单的东西服务举例 我确信您渴望获得一些工作代码
  • Node.js 中的异步或步骤

    我无法让我的异步代码与 node js 一起使用 尝试异步和步骤库 代码仅返回第一个函数 似乎没有执行其余函数 我究竟做错了什么 thanks var step require step step function f1 console l
  • 错误:无法创建新会话,因为找不到需要 HttpClient、InputStream 和 long 的“createSession”

    我正在尝试自动化 Android 混合应用程序 但出现以下错误 1 线程 main org openqa selenium WebDriverException中出现异常 无法创建新会话 因为未找到需要 HttpClient InputSt
  • 获取其他指针的MotionEvent.getRawX/getRawY

    我可以获取其他指针的MotionEvent getRawX getRawY 值吗 MotionEvent getRawX API 参考 http developer android com reference android view Mo
  • 使用单选按钮更改背景颜色 Android

    我试图通过从单选组中选择单选按钮来更改应用程序选项卡的背景 但是我不确定如何执行此操作 到目前为止我已经 收藏夹 java import android app Activity import android os Bundle publi
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组

随机推荐

  • Chrome 的 --auto-open-devtools-for-tabs

    我正在尝试使用命令行开关从快捷方式启动 chrome 时自动打开开发工具 auto open devtools for tabs 即该快捷方式的路径是 C Program Files x86 Google Chrome Applicatio
  • 填充可变数量的

    用未知 在编译时 数量填充变量的最佳方法是什么 例如 假设 int n 5 int b fillwithones 5 现在 b 包含 11111 二进制 我不能只是硬编码 int b 31 因为 n 提前不知道 在我的应用程序中 我可以做这
  • 我自己的存储和检索使用 Delphi 文本 DFM 格式的寿命很长

    随着时间的推移 我已经推出了自己的格式来保存和加载对象属性 但在必须重新访问时 我想知道是否使用 Delphi 自己的文本 DFM 格式 我知道这确实是一种 内部 格式 但它的读者现在似乎定义得很好 并且它可以处理所有类型的属性 有人对可能
  • 在 git-svn 项目中使用 git 子模块

    在我们的 git svn 管理的项目中 我们有 3 个上游项目 它们都保存在 GitHub 上的本机 git 存储库中 由于这些上游项目的源代码在我们的控制之下并且经常更改 因此我们当前的解决方案 即每次更改某些内容时都将构建工件重新部署到
  • 如何使用JS和传单层控件更改基础层

    我必须修改现有的应用程序 其中使用传单图层控件 我需要在启动地图时显示基础图层之一 有没有办法 如何从 JS 脚本调用层控件中的某些函数 比如 control select 1 如果没有 如何以与控件相同的方式添加图块图层 当我在地图初始化
  • Three.js - 鱼眼效果

    所以 我搞砸了three js 效果很好 我唯一不明白的是如何制作具有真正鱼眼效果的相机 这怎么可能 camera setLens 鱼眼效果可以使用 Giliam de Carpentier 的镜头畸变着色器来实现 着色器代码 functi
  • 如何使用Excel VBA制作外部日志?

    代码已更新以引用以下更改 该日志系统为 Excel 创建一个名为 Log txt 的外部文档 它将在 log txt 文件中创建一行 如下所示 11 27 20 AM Matthew Ridge 将单元格 N 55 从 ss 更改为 这不会
  • JDK8 无法与 JDK8(WS 客户端)一起使用

    我有一个非常简单的 现有的 Web 服务 我想使用 JDK8 生成一个 Web 服务客户端 我使用的是纯 JDK8 工具链 这意味着我使用 JDK8 目录中的 wsimport 工具 现在问题来了 JDK8 中的 wsimport 工具生成
  • Angular2 异常没有字符串提供者

    我有一个使用 ng cli 创建的全新应用程序 用这个非常简单的代码 import Component from angular core Component selector app root templateUrl app compon
  • 替换字符串中字符的所有实例的最快方法[重复]

    这个问题在这里已经有答案了 在 JavaScript 中替换字符串中字符串 字符的所有实例的最快方法是什么 Awhile a for loop 正则表达式 最简单的方法是使用正则表达式g替换所有实例的标志 str replace foo g
  • 连接管理器 unregisterNetworkCallBack 已取消注册

    在我的 Android 应用程序中 我正在取消注册活动的网络回调 onPause 有时我会遇到错误 原因是 java lang IllegalArgumentException NetworkCallback was already unr
  • Django 中的 URL 路径参数与查询参数

    我已经环顾了一段时间 似乎找不到任何涉及差异的东西 正如标题所述 我试图找出通过 url 路径参数获取数据的区别 例如 content 7然后在 urls py 中使用正则表达式 并从查询参数中获取它们 例如 content num 7 u
  • ASP.NET -- IIS7 -- IBM DB2 问题

    我正在开发一个调用 DB2 数据库的 ASP NET 网站 我在将托管该站点的 Windows 2008 服务器上安装了 Visual Studio 当我使用集成 Web 服务器在 Visual Studio 中调试站点时 我可以连接到数据
  • 将 NSAttributedString 添加到 UIBarButtonItem

    我正在尝试在后栏按钮项目上设置属性字符串 这是我第一次尝试属性字符串 这是代码 self navigationItem hidesBackButton true let barButtonBackStr lt Back var attrib
  • 用作索引器键的打字稿文字类型

    有没有什么方法可以定义可以用作索引器中的字符串键的打字稿文字类型 type TColorKey dark light interface ColorMap period TColorKey Color 这会引发错误 An index sig
  • 在执行shell中获取Jenkins环境变量

    我想知道是否可以在配置构建中的执行 shell 内访问 Jenkins 环境变量 如果是这样 你能给我举个例子吗 我需要将环境信息与测试的一些输出结合起来 以提供完整的运行报告 不使用插件 Please check http yourjen
  • 使用 HTML5 和 JavaScript 从视频中捕获帧

    我想每 5 秒从视频中捕获一帧 这是我的 JavaScript 代码 video addEventListener loadeddata function var duration video duration var i 0 var in
  • 如何在猫鼬模型上使用partialFilterExpression

    我创建了一个带有电子邮件字段的猫鼬模型 如果用户提供了值 我希望它是唯一的 但如果用户未提供任何值 我希望它为空 我在这里找到了一个很好的 mongodb 参考 https docs mongodb com manual core inde
  • Python Pandas 动态创建 Dataframe

    下面的代码将生成所需的输出ONEdataframe 但是 我想在 FOR 循环中动态创建数据帧 然后将移位后的值分配给该数据帧 例如 数据帧 df lag 12 将仅包含column1 t12 和column2 12 任何想法将不胜感激 我
  • Android 蓝牙socket非阻塞通信教程

    我正在寻找 Android 上的蓝牙示例代码来进行非阻塞套接字通信 我找到了几个例子 例如BluetoothChat或BluetoothSocket java 但没有一个是non blocking socket communication