예있다. socket
을 받으면 InputStream
인스턴스를 제공 할 수 있습니다. socket
이 연결된 경우 데이터를 읽을 수 있습니다 (InputStream
랩핑 할 경우 어떤 판독기를 사용할지에 따라 char
, String
또는 byte
).
직렬 포트을 장치와 함께 열려면 소켓을 만들 때 사용하는 UUID의 직렬 포트 프로파일을 사용해야합니다. 웹에 던져 간단한 UUID는 그런 다음, 당신의 소켓을 만들에 연결, 스트림을 얻고 그들과 함께 바이트를 읽기/쓰기 할 수
00001101-0000-1000-8000-00805F9B34FB
입니다. 예 :
private static final String UUID_SERIAL_PORT_PROFILE
= "00001101-0000-1000-8000-00805F9B34FB";
private BluetoothSocket mSocket = null;
private BufferedReader mBufferedReader = null;
private void openDeviceConnection(BluetoothDevice aDevice)
throws IOException {
InputStream aStream = null;
InputStreamReader aReader = null;
try {
mSocket = aDevice
.createRfcommSocketToServiceRecord(getSerialPortUUID());
mSocket.connect();
aStream = mSocket.getInputStream();
aReader = new InputStreamReader(aStream);
mBufferedReader = new BufferedReader(aReader);
} catch (IOException e) {
Log.e(TAG, "Could not connect to device", e);
close(mBufferedReader);
close(aReader);
close(aStream);
close(mSocket);
throw e;
}
}
private void close(Closeable aConnectedObject) {
if (aConnectedObject == null) return;
try {
aConnectedObject.close();
} catch (IOException e) {
}
aConnectedObject = null;
}
private UUID getSerialPortUUID() {
return UUID.fromString(UUID_SERIAL_PORT_PROFILE);
}
그리고는 어딘가에 코드에서 당신은 판독기에서 읽을 수 있습니다
String aString = mBufferedReader.readLine();
그리고 당신은 OutputStream
다양한 작가를 사용하여 반대 방향으로 같은 일을 할 수 있습니다.
그러나 코드가 작동하지 않습니다. 그 말은 기기에 연결할 수 없습니다. –
@AMIamitekh 그건 5 년 된 질문입니다. 코드가 게시 된 것처럼 작동 할 것으로 기대하십니까? – AntoineG