Java 如何获取蓝牙传入消息返回的字节数组值,并在其他设备上显示之前对其进行编辑?

Java 如何获取蓝牙传入消息返回的字节数组值,并在其他设备上显示之前对其进行编辑?,java,android,bluetooth,Java,Android,Bluetooth,所以几天前我问了这个问题,但也许我可以再详细一点,或者现在用不同的方式。我是一个java和android的新手,所以我需要花很多时间来弄清楚事情的真相。我在两台设备之间有蓝牙连接。我试过使用传感器,一切正常。这些设备连接在一起,并相互发送传感器值。 但是,此传感器值是自动生成的。我想要的是从其中一个设备获取DB值,将它们转换为字节,将它们添加到字节数组中,并将此字节数组作为单个消息发送到另一个设备,在那里它将反转该过程。我已经把一切都设置好了,一切都是它应该是的,只有一个例外——我需要以某种方式

所以几天前我问了这个问题,但也许我可以再详细一点,或者现在用不同的方式。我是一个java和android的新手,所以我需要花很多时间来弄清楚事情的真相。我在两台设备之间有蓝牙连接。我试过使用传感器,一切正常。这些设备连接在一起,并相互发送传感器值。 但是,此传感器值是自动生成的。我想要的是从其中一个设备获取DB值,将它们转换为字节,将它们添加到字节数组中,并将此字节数组作为单个消息发送到另一个设备,在那里它将反转该过程。我已经把一切都设置好了,一切都是它应该是的,只有一个例外——我需要以某种方式将incomingMessage捕获为字节数组,这样我才能完成这个过程。 如何获取incomingMessage的值(应该传输一个字节数组)并将其添加到另一个字节数组中,然后进行“解码”

注释掉的一个是我尝试并正在工作的示例

 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值以将其作为单字节数组发送。