Java 如何获取蓝牙传入消息返回的字节数组值,并在其他设备上显示之前对其进行编辑?
所以几天前我问了这个问题,但也许我可以再详细一点,或者现在用不同的方式。我是一个java和android的新手,所以我需要花很多时间来弄清楚事情的真相。我在两台设备之间有蓝牙连接。我试过使用传感器,一切正常。这些设备连接在一起,并相互发送传感器值。 但是,此传感器值是自动生成的。我想要的是从其中一个设备获取DB值,将它们转换为字节,将它们添加到字节数组中,并将此字节数组作为单个消息发送到另一个设备,在那里它将反转该过程。我已经把一切都设置好了,一切都是它应该是的,只有一个例外——我需要以某种方式将incomingMessage捕获为字节数组,这样我才能完成这个过程。 如何获取incomingMessage的值(应该传输一个字节数组)并将其添加到另一个字节数组中,然后进行“解码” 注释掉的一个是我尝试并正在工作的示例Java 如何获取蓝牙传入消息返回的字节数组值,并在其他设备上显示之前对其进行编辑?,java,android,bluetooth,Java,Android,Bluetooth,所以几天前我问了这个问题,但也许我可以再详细一点,或者现在用不同的方式。我是一个java和android的新手,所以我需要花很多时间来弄清楚事情的真相。我在两台设备之间有蓝牙连接。我试过使用传感器,一切正常。这些设备连接在一起,并相互发送传感器值。 但是,此传感器值是自动生成的。我想要的是从其中一个设备获取DB值,将它们转换为字节,将它们添加到字节数组中,并将此字节数组作为单个消息发送到另一个设备,在那里它将反转该过程。我已经把一切都设置好了,一切都是它应该是的,只有一个例外——我需要以某种方式
if (mBluetoothConnection.incomingMessage != null) {
//messageTemp = mBluetoothConnection.incomingMessage;
msg = mBluetoothConnection.incomingMessage;
}
未注释掉的是我要分配给字节数组的值:
byte[] array = msg;
这是我到目前为止唯一没有弄清楚的事情。
我当前的问题是“数组”返回空对象引用。
请帮帮我!我觉得我几乎连接了两座桥,每座桥上的油漆都差一厘米就好了。好吧,我设法弄明白了,但忘了更新,下面是我的另一篇文章,还有一点代码: 以下是我所改变的: 我只接触了BluetoothConnectionService中的run()方法 正如我在注释代码中提到的,我没有使用byte[]缓冲区,而是声明了一个公共静态byte[]incomingBytes,并将其大小设置为44,因为这是我的11整数数组需要的。然后我在示例代码中将“buffer”替换为“incomingBytes”,如下所示:
public static byte[] incomingBytes = new byte[44];
public void run(){
//byte [] buffer replaced with incomingBytes
byte[] buffer = new byte[44]; // this was in the example, but it is not used. It was replaced by incomingBytes, declared at the start of the class
int bytes; // bytes returned from read()
// Keep listening to the InputStream until an exception occurs
while (true) {
// Read from the InputStream
try {
bytes = mmInStream.read(incomingBytes);
incomingMessage = new String(incomingBytes, 0, bytes);
Log.d(TAG, "InputStream: " + incomingMessage);
} catch (IOException e) {
Log.e(TAG, "write: Error reading Input Stream. " + e.getMessage() );
break;
}
}
}
然后,我只需要在另一个类中为我的转换调用incomingBytes,它就可以正常工作。
我需要以某种方式将incomingMessage捕获为字节数组,
您已经在这样做了。您在字节缓冲区[]=新字节[1024];中接收它们;。使用缓冲区mBluetoothConnection.incomingMessage
这是一个字符串,您不会使用中间字符串来传输字节数组。使用缓冲区
。我告诉过你怎么做。此外,你没有告诉'味精'的类型。和“incomingMessage”。为什么不在这里继续我们的对话:我当前的问题是“array”返回空对象引用。
???你这是什么意思?@blackapps认为我可以重新定义它,以便更好地定义它。我尝试了各种各样的事情,但每件事都给了我不同于我所需要的结果。是的,我正在捕获字节,但IncomingMessage是一个字符串。如果将其更改为byte,则无法传递byte和buffer值以将其作为单字节数组发送。