2012-06-12 3 views
4

페어링 된 블루투스 기기에서 데이터를 읽는 Android 4.0 애플리케이션에서 작업 중입니다. 검색 가능한 블루투스 기기를 검색하고 기기를 페어링 할 수 있습니다. 그러나 직렬 포트를 통해 Bluetooth 장치에서 데이터를 읽는 방법을 잘 모르겠습니다. 안드로이드 시스템이 직렬 포트를 지원합니까? 안드로이드 시스템에서 COM1 또는 COM2 같은 직렬 포트를 찾을 수 없기 때문에. 지금은 BluetoothSocket을 사용하여 장치를 페어링하고 있습니다. 그러나 Windows와 같은 Bluetooth 직렬 포트에서 데이터를 읽을 수있는 방법이 있습니까?Android에서 페어링 된 블루투스 기기에서 데이터를 읽으십시오.

socket = _devices.get(k).createRfcommSocketToServiceRecord(MY_UUID_SECURE); 
socket.connect(); 

감사합니다. 고마워.

감사합니다,

찰스

답변

8

예있다. 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 다양한 작가를 사용하여 반대 방향으로 같은 일을 할 수 있습니다.

+0

그러나 코드가 작동하지 않습니다. 그 말은 기기에 연결할 수 없습니다. –

+1

@AMIamitekh 그건 5 년 된 질문입니다. 코드가 게시 된 것처럼 작동 할 것으로 기대하십니까? – AntoineG

관련 문제