如何使用蓝牙和ObjectOutputStream和ObjectInputStream在Android和PC之间传输对象



我在使用BT实现PC和android之间的通信时遇到了一个问题,我有一个应用程序可以在WIFI通信上正常工作,使用标准的java Socket及其流。我正在尝试添加Bt通讯。Android端打开流的代码使用标准的BluetoothSocket(建立通信,这是ok的):

mOos = new ObjectOutputStream(btSocket.getOutputStream());
mOos.flush();
mOis = new ObjectInputStream(btSocket.getInputStream());

在PC端我使用Bluecove 2.1

mOos = new ObjectOutputStream(mStreamConn.openOutputStream());
mOos .flush();
mOis = new ObjectInputStream(mStreamConn.openInputStream());

流被正确初始化。我正在从android发送初始消息到PC

protected synchronized void sendAwaitingMsg() throws IOException {
    Message msg;
    while((msg = mOutgoingMsgQueue.poll()) != null) {
        mOos.writeObject(msg);
    }
    mOos.flush();
}

然后试着在PC端读取

protected void getIncomingMsg() throws IOException, ClassNotFoundException {
    if(mOis.available() > 0) {
        Message msg = (Message)mOis.readObject();
        if(msg.mControlHeader > 0) {
            mKeepRunning = false;
        } else {
            msg.setHandlerId(mId);
            mConnectionManager.acceptNewMessage(msg);
        }
    }
}

但是mOis.available()总是0,这意味着它不接收发送消息。My Message对象类:

public class Message extends LinkedHashMap implements Serializable, Comparable {
static final long serialVersionUID = 10275539472837495L;
protected long mHandlerId;
protected int mType;
protected int mPriority;
public int mControlHeader = 0;

public int getType() {
    return mType;
}
public void setType(int type) {
    this.mType = type;
}
public long getHandlerId() {
    return mHandlerId;
}
public void setHandlerId(long handlerId) {
    this.mHandlerId = handlerId;
}
public int getPriority() {
    return mPriority;
}
public void setPriority(int priority) {
    mPriority = priority;
}
@Override
public int compareTo(Object o) {
    return mPriority - ((Message)o).mPriority;
}

}

相同的操作,在标准java套接字上,和网络通信就像一个魅力。问题在哪里?

我在android和PC之间的蓝牙通信中也遇到过类似的问题。我终于找到了一些关于bluecove(在java中实现蓝牙库)的信息,并在以下链接中提供了一个很棒的注释示例:

http://fivedots.coe.psu.ac.th/广告/詹/blue4/blueCoveEcho.pdf

这里有另一个例子,但没有使用bluecove:

http://fivedots.coe.psu.ac.th/广告/詹/蓝天航空公司/blueEcho.pdf

最新更新