Java 通过I/O流接收一定数量的字节

Java 通过I/O流接收一定数量的字节,java,android,io,bluetooth,palm,Java,Android,Io,Bluetooth,Palm,我正在创建一个Android应用程序,通过蓝牙将我的设备连接到嵌入式芯片。我在Palm Pilot(用C编写)上已经存在的程序之后对我的设计进行建模。我正在使用蓝牙聊天示例来运行我的代码,但是我被卡住了。我对整个编码世界还是相当陌生的,我有点困惑自己 我想将以下代码从C转换为Java SrmReceive(portId,&c,1,(t*5L*Sec)/1000L,&err) 这里唯一真正的问题是,第三个参数。1表示要接收的字节数,如palm文档中所述,类型为UInt32 蓝牙聊

我正在创建一个Android应用程序,通过蓝牙将我的设备连接到嵌入式芯片。我在Palm Pilot(用C编写)上已经存在的程序之后对我的设计进行建模。我正在使用蓝牙聊天示例来运行我的代码,但是我被卡住了。我对整个编码世界还是相当陌生的,我有点困惑自己

我想将以下代码从C转换为Java

SrmReceive(portId,&c,1,(t*5L*Sec)/1000L,&err)
这里唯一真正的问题是,第三个参数。
1
表示要接收的
字节数,如palm文档中所述,类型为
UInt32

蓝牙聊天示例中的代码具有以下读取数据的功能

            public void run() {
                Log.i( TAG, "BEGIN mConnectedThread" );
                buffer = new byte[1024];
                int bytes;

                // Keep listening to the InputStream while connected
                while( true ) {
                try {
                    // Read from the InputStream
                    bytes = mmInStream.read( buffer );

                    // Send the obtained bytes to the UI Activity
                    mHandler.obtainMessage( BtHelperHandler.MessageType.READ, bytes, buffer).sendToTarget();
                } catch ( IOException e ) {
                    Log.e( TAG, "disconnected", e );
                    sendErrorMessage( 1 );
                    break;
                }
            }
        }
我想将
run()
方法更改为具有用于读取特定字节数的参数。我有点不知道该怎么办。我在想

public void run( int size ) {
    buffer = new byte[size];
    ...
}

但我觉得这不对,我觉得我把字节的定义搞混了。听起来可能很愚蠢,但我对这些信息还不够自信。将
UInt32
转换为java让我感到困惑,因为java没有等效的类型。如果有人知道,请告诉我。

没有理由感到困惑,你所做的是正确的。假设mmInStreamInputStream的一个实例

byte[] buffer = new byte[1024];
int bytes = mmInStream.read(buffer);
将读取最多1024字节的任何可用数据,并返回它读取的字节数。这是数据流的一种低级方法,这很好,它只是意味着您现在必须知道如何处理这个字节数组

如果您经常阅读原语,您可能想看看DataInputStream,像这样使用它

DataInputStream dat = new DataInputStream(mmInStream);
int x = dat.readInt();
将从流中读取32位数据(4字节),并将它们排列成一个Javaint原语。需要注意的事项有,有,以及有/无签名的合并。如果遇到问题,可以使用