相关疑难解决方法(0)

Android InputStream前两个字节丢失(修改后的BluetoothChat)

我使用了来自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)

android inputstream character-encoding

8
推荐指数
1
解决办法
1万
查看次数

Android BluetoothSocket OutputStream无限地写入块

我需要以编程方式将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)后无限地阻塞.值得一提的是,远程设备未配置为监听数据.对可写入的数据量有任何限制吗?

sockets android bluetooth outputstream

6
推荐指数
1
解决办法
5044
查看次数