首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android蓝牙开发(三)之蓝牙通信

BluetoothSocket,同样的也要有Socket服务端和客户端 2.蓝牙通信消息接收端 设备连接后,跳转到通讯界面,首先我们要在通讯界面开启消息接收端服务,同样的我们要在一个线程中开启 得到bluetooth...的inputstream输入流接收即可,同时我们可能接收到的是文件,需要将文件保存下来,记得申明相关权限。...; } try { InputStream inputStream = APP.bluetoothSocket.getInputStream(); /...文件保存成功")); } } } catch (IOException e) { e.printStackTrace(); } } 3.蓝牙通信发送文本消息...通信和java中socket类似就不具体讲解了,需要注意的是当这里收到消息或者发送消息成功时,我这里用的是Eventbus异步通知 代码如下次: /** * 发送文本消息 * * @param

2.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    处理Java异常的9个最佳实践

    每个必须了解在日志文件或监视工具中抛出异常时发生了什么的人都会读取异常的消息。 因此,它应该尽可能准确地描述问题,并提供最相关的信息来理解异常事件。 别误会我的意思; 你不应该写一段文字。...它的消息只需要提供导致问题的输入字符串。如果异常类的名称不具有表现力,则需要在消息中提供所需的信息。...但它会为同一个异常写出多条错误消息。...否则,你将丢失原始异常的堆栈跟踪和消息,这将导致难以分析导致异常的异常事件。...异常通常同时是错误处理机制和通信媒介。因此,您应该确保与同事讨论要应用的最佳实践和规则,以便每个人都能理解通用概念并以相同的方式使用它们。

    77350

    【BIO】通过指定消息大小实现的多人聊天室-终极版本

    告知对方从输入流中读取指定大小的字节。 本文使用第四种方案来实现聊天室 思路为: 客户端在发送消息之前,先计算出本次发送的数据量的字节大小,比如为N个字节。...服务端在获取到输入流之后,根据约定,先读取前X个字节,根据这个字节的值可以知道,本次发送的数据量的大小,那么在读取数据时,只需要读取后续的N个字节即可。.../** * 从输入流中读取指定大小的字节数据并转换成字符串 * * @param inputStream 输入流 * @return 读取到的字符串...] contentBytes = new byte[curMessageLength]; //读取指定长度的字节 inputStream.read(contentBytes...private static final Logger logger = LoggerFactory.getLogger(BioChatServer.class); /** * 可同时接入的客户端数量

    42710

    蓝牙 Mesh 简单使用☞北

    蓝牙 Mesh 与传统蓝牙的区别传统蓝牙就像是情侣之间的约会,只能两个人面对面,彼此交流。而蓝牙 Mesh 则像是一个大型派对,人人都可以参与进来,信息在所有人之间自由流动。想要扩展网络?...每个节点都有自己独特的地址,互相之间既能发送消息,又能接收消息,形成了一个无缝的网络。关键组件节点:想象每个设备都是派对上的一位舞者,既能发送信息(跳舞),又能转发信息(带动其他人一起舞动)。...数据传输和路由机制蓝牙 Mesh 的数据传输采用洪泛技术,就像一个小道消息,先是一个节点听到了,然后它把消息传递给邻居,邻居又传递给下一个,直到整个网络都知道。...路由算法LPN(Low Power Node):这些节点就像派对上最节俭的朋友,随时准备进入休息状态以节省体力,但一旦有消息,就会迅速唤醒参与。...可靠性:信息通过多条路径传递,就算有朋友缺席,消息依然可以找到最好的到达方式,确保网络永不“掉线”。低功耗:低功耗节点就像派对上的小憩者,虽然消耗少,但依然能在合适的时刻投入活动。

    13110

    『uni-app、小程序』蓝牙连接、读写数据全过程

    大致思路 使用蓝牙进行数据传输的大概思路如下: 初始化:打开蓝牙模块 搜寻:检测附近存在的设备 连接:找到目标设备进行 监听:开启监听功能,接收其他设备传过来的数据 发送指令:不管发送数据还是读取数据,...要开启监听,首先需要知道蓝牙设备提供了那些服务,然后通过服务获取特征值,特征值会告诉你哪个可读,哪个可写。最后根据特征值进行消息监听。...接收消息监听传来的数据:uni.onBLECharacteristicValueChange 正常情况下,硬件佬会提前把蓝牙设备的指定服务还有特征值告诉你。...uni.readBLECharacteristicValue:读取低功耗蓝牙设备的特征值的二进制数据值。...“读取” 指令。

    1.6K20

    uni-app 蓝牙连接、读写数据全过程(真实案例)

    大致思路 使用蓝牙进行数据传输的大概思路如下: 初始化:打开蓝牙模块 搜寻:检测附近存在的设备 连接:找到目标设备进行 监听:开启监听功能,接收其他设备传过来的数据 发送指令:不管发送数据还是读取数据,...要开启监听,首先需要知道蓝牙设备提供了那些服务,然后通过服务获取特征值,特征值会告诉你哪个可读,哪个可写。最后根据特征值进行消息监听。...接收消息监听传来的数据:uni.onBLECharacteristicValueChange 正常情况下,硬件佬会提前把蓝牙设备的指定服务还有特征值告诉你。...uni.readBLECharacteristicValue:读取低功耗蓝牙设备的特征值的二进制数据值。...“读取” 指令。

    9.9K63

    面试突击70:什么是粘包和半包?怎么解决?

    粘包和半包问题是数据传输中比较常见的问题,所谓的粘包问题是指数据在传输时,在一条消息中读取到了另一条消息的部分数据,这种现象就叫做粘包。...byte[BYTE_LENGTH]; // 读取客户端发送的信息 int count = inputStream.read(bytes, 0, BYTE_LENGTH...① 消息封装类 消息的封装类中提供了两个方法:一个是将消息转换成消息头 + 消息体的方法,另一个是读取消息头的方法,具体实现代码如下: /** * 消息封装类 */ class SocketPacket...(也就是消息体的长度) * @param inputStream * @return */ public int getHeader(InputStream inputStream...IOException ioException) { ioException.printStackTrace(); } } } PS:上述代码使用了线程池来解决多个客户端同时访问服务器端的问题

    37930

    认知IO流之 — InputStream

    这是 cxuan 的第 34 篇原创文章 InputStream 结构概述 InputStream 是一个抽象类,这个抽象类是代表所有字节流输入的父类,应用程序需要定义一个InputStream 的子类...下面是针对 InputStream 的子类做的图表,从图表中可以对 InputStream 的子类有一个大致的了解 类和功能 构造器参数解释 FileInputStream 用于从文件系统的文件中读取字节...实际读取的字节数以整数形式返回。如果参数 b 的长度是0 ,就不会读取字节并且返回 0;这个方法会尝试读取至少一个字节并存储在b数组中。...,直接抛出空指针异常,如果起始读取位置小于0,或者读取长度小于0,或者需要读取的长度要比实际的长度大,抛出数组越界异常,若读取的长度为0,那么就不会读取任何字节。...这可能是由许多条件中的任何一个引起的;只有一种可能性就是在跳过 n 个字节之前到达末尾。此方法会返回跳过的实际字节数。如果 n 是负数,skip 方法总是返回 0,并且不跳过任何字节。

    62610

    iOS ExternalAccessory框架初探

    ExternalAccessory框架,就是可以用来和Lightning接口的硬件,或者蓝牙(2.1)设备进行连接、通讯的这么一个框架。...(当然,也可以和30-pin接口的硬件连接、通讯——不过现在几乎没有这种接口的设备了吧~) 就是你现在有一个Lightning耳机(iPhone7, 7Plus的耳机~),或者有一个蓝牙2.1的音箱,你要写一个...比如我前公司,帮美国公司代工的一款蓝牙2.1的音箱,写了一个App进行控制(灯光、音效);还有现在公司,做Lightning设备的App,用来对耳机进行简单的控制、固件升级。...= nil) { // open input stream self.session.inputStream.delegate = self; [self.session.inputStream...NSStreamEventEndEncountered: break; default: break; } } HasBytesAvailable:表示stream中有数据需要读取

    2.7K50
    领券