Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通过蓝牙发送数据_Android_Bluetooth_Transmission - Fatal编程技术网

Android 通过蓝牙发送数据

Android 通过蓝牙发送数据,android,bluetooth,transmission,Android,Bluetooth,Transmission,我对如何通过蓝牙连接发送数据有点困惑。在Android API文档中,来自Bluetooth聊天示例的类BluetoothChat.java构造了一个处理程序对象。其中有一个switch语句和一个消息\u WRITE案例。我是否需要实现类似的代码来通过蓝牙发送字符串?要发送的每个字符串的case语句?特别是我想发送(名称、值)对,这样我就知道发送的是什么以及它的值是什么。我如何实现这一点?如果按照下面的示例,我调用BluetoothChatService.write(String.getByte

我对如何通过蓝牙连接发送数据有点困惑。在Android API文档中,来自Bluetooth聊天示例的类BluetoothChat.java构造了一个处理程序对象。其中有一个switch语句和一个
消息\u WRITE
案例。我是否需要实现类似的代码来通过蓝牙发送字符串?要发送的每个字符串的case语句?特别是我想发送
(名称、值)
,这样我就知道发送的是什么以及它的值是什么。我如何实现这一点?如果按照下面的示例,我调用
BluetoothChatService.write(String.getBytes())
多次来发送。。。?那么我怎么知道哪些字符串与哪些名称关联呢?请提供帮助。

将对序列化为允许字节表示的任何格式。例如XML或JSON。甚至你的自定义格式,对于成对的字符串来说也不难。然后发送。

我在Android应用程序中使用谷歌的蓝牙连接发送结构化数据。protobuf负责为您确定如何序列化消息,这样您只需发送一个字节值(消息长度),然后发送序列化消息;该库负责在另一端取消序列化消息并填充自定义对象的字段。一定要看一看,;它使编写自定义蓝牙套接字协议变得非常简单。

对于简单的字符串对(例如名称),您只需使用一些字符来定义第一个字符串何时停止,下一个字符串何时开始

例如,我使用这样的格式将一组3个字符串从一个设备发送到另一个设备:

String toSend = partOne + ":" + partTwo + ":" + partThree;
在另一台设备上,要获取发送的字符串,请使用String.split()方法,如下所示:

String parts[] = received.split(":",3);
第二个参数是分割次数的限制。在本例中,有3个字符串,因此最多拆分3次

这样做的缺点是,您需要使用除了最后一个字符串之外永远不会出现的字符

在我的应用程序中,我使用此方法发送有关文本消息的数据,前两部分是电话号码和时间戳,因此其中永远不会有:。对于名字,换行可能会起作用


如果要发送更复杂的数据,一定要使用协议缓冲区之类的东西。

这样的东西:MyObject实现可序列化的{String name;String value;MyObject(String name,String value){this.name=name;this.value=value;}String getName(){return name;}String getVal(){return value;}}然后在蓝牙代码中:MyObject对=新的MyObject(“a”、“b”);write(pair.getBytes());回顾这一点,我的意思是序列化数据。我年轻时写的这篇文章,在我知道序列化之前。今天,我建议您使用JSON。您是否发现有必要将消息分成更小的“块”以支持最小的BLE消息长度23?