BT를 사용하여 PC와 Android간에 통신을 구현할 때 문제가 발생했습니다. 나는 표준 자바 소켓과 그 스트림을 사용하여 WIFI 통신에서 올바르게 작동하는 애플리케이션을 가지고있다. Bt 통신을 추가하려고합니다. 스트림을 여는 안드로이드 쪽 코드 (통신이 설정되고, 괜찮아요) 표준 BluetoothSocket을 사용하여 PC 측면에서블루투스와 ObjectOutputStream 및 ObjectInputStream을 사용하여 Android와 PC간에 객체를 전송하는 방법은 무엇입니까?
mOos = new ObjectOutputStream(btSocket.getOutputStream());
mOos.flush();
mOis = new ObjectInputStream(btSocket.getInputStream());
내가 Bluecove 2.1 사용합니다.
mOos = new ObjectOutputStream(mStreamConn.openOutputStream());
mOos .flush();
mOis = new ObjectInputStream(mStreamConn.openInputStream());
스트림이 올바르게 초기화되었습니다. 나는 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입니다 . 내 메시지 개체 클래스 : 표준 자바 소켓
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;
}
}
같은 작업 및 네트워크 통신은 매력처럼 작동합니다. 문제가 어디에 있습니까?