Android:BluetoothSocket和InputStream.available()

时间:2011-12-07 11:33:13

标签: android bluetooth inputstream

我想检查BluetoothSocket是否开启运行..... 这是我的工作:

首先,我从我的BluetoothSocket获取一个InputStream,我想用该InputStream执行一些操作,如果发生IOException,我的程序可以确定套接字已断开.....并确保套接字连接后我想要从中读取一些数据。

为了确保我调用available()默认返回0或多个字节....如果返回值为0,我的读操作会抛出IOException。

以下是我的问题。

  1. available()是阻止I / O调用还是异步调用?

  2. 仅当我在连接时从我的设备提供一些输入时返回值> 0,但情况并非总是如此。我是否有任何错误,允许读取是否有0个可用字节?怎么避免这个?

1 个答案:

答案 0 :(得分:0)

首先,你必须连接蓝牙服务器。使用connect()进行连接,此方法将阻塞,直到建立连接或连接失败(导致异常)。因此,请确保在单独的线程上运行它。

public void run() {
    try {

        socket.connect();

                    InputStream in = socket.getInputStream();
                   //socket connected, inputStream can be used 
                   //Bluetooth
    } catch (IOException e) {
        //Socket is refused connection with the server.
    }
}