我使用了来自BluetoothChat示例的代码来发送和接收来自蓝牙音阶的字节数据.标尺从设备接收命令,然后发回一个字节数组.{2,198,48,48,48,48,199,3}我们的通信协议中2 = STX,198 =数据包开始,199 =数据包结束,3 = ETX.
一切正常,除了BluetoothChatService.java中的以下代码奇怪地做出反应,因为它丢弃了前两个字节.
/**
* This thread runs during a connection with a remote device.
* It handles all incoming and outgoing transmissions.
*/
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
public ConnectedThread(BluetoothSocket socket, String socketType) {
Log.d(TAG, "create ConnectedThread: " + socketType);
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
// Get the BluetoothSocket input and output streams
try { …Run Code Online (Sandbox Code Playgroud) 我需要以编程方式将1到100 MB的数据以1024字节的块写入远程蓝牙设备.两者都是Android设备.以下是我的客户端程序中传输数据的示例代码段 -
bTSocket.connect(); //connect to remote BT device
DataOutputStream outStream = new DataOutputStream(bTSocket.getOutputStream());
byte[] buffer = new byte[1024];
int bytesToTransfer = 1000000;
while (bytesToTransfer > 0) {
outStream.write(buffer);
outStream.flush();
bytesToTransfer -= 1024;
}
outStream.close();
Run Code Online (Sandbox Code Playgroud)
在Android 2.2(Froyo)上运行这段代码时,它运行正常.但是在Android 2.3.4和4.0.4的情况下,outStream.write(缓冲区)在传输一些数据(比如100 KB)后无限地阻塞.值得一提的是,远程设备未配置为监听数据.对可写入的数据量有任何限制吗?