2012-03-01 1 views
0

BT를 통해 여러 장치를 서버 장치에 연결하고 있습니다. 연결할 수 있도록 여러 개의 UUID가 있습니다.BT 소켓에 사용 된 UUID 찾기

그러나 때때로 장치가 연결이 끊어 지므로 서버를 검색 가능하게 만들고 장치가 원래 사용했던 것과 동일한 UUID를 사용해야합니다. 그렇게하면 해당 UUID를 사용할 수 있습니다.

장치에 연결하는 데 사용 된 UUID를 알 수있는 방법이 있습니까?

답변

0

나는 당신의 문제를 이해하지만, 안드로이드 SDK는 안드로이드 소스 코드에서 볼 수 있듯이 블루투스 소켓이 연결된 UUID를 알고있는 한, 안드로이드 SDK가 블루투스 소켓과 관련된 내부 UUID를 얻는 방법을 공개하지 않을까 걱정된다.

다른 UUID를 청취하는 BluetoothServerSockets를 여러 개 만들 수 있습니다. 원하는 BluetoothServerSocket에서 accept() 호출로 생성 된 BluetoothSockets 간의 연관성을 잃지 않는 것이 좋습니다. 왜냐하면 ServerSocket을 만들 때 UUID를 알았 기 때문입니다.

public class IncommingConnectionsForAGivenUUID extends Thread 
{ 
    private BluetoothServerSocket serverSocket; 
    private UUID serviceUUID; 
    private boolean isRunning; 

    public IncommingConnectionsForAGivenUUID(BluetoothAdapter btAdapter, UUID serviceUUID) throws IOException 
    { 
     this.serverSocket = btAdapter.listenUsingRfcommWithServiceRecord("localBtName", serviceUUID); 
     this.serviceUUID = serviceUUID; 
    } 

    @Override 
    public void run() 
    { 
     this.isRunning = true; 

     while(this.isRunning) 
     { 
     BluetoothSocket socket = this.serverSocket.accept(); 

     // do something with the socket... 

     // this socket will have the UUID passed in 
     // the constructor. So in this point you can associate 
     // this socket with the serviceUUID variable without 
     // having to call a method from the BluetoothSocket 
     } 
    } 
} 

좋아,이 유일한 해결책이 아니라 주어진 ServerSocket를 위해 받아 들인 BluetoothSockets와 UUID를 연결하려는 경우는 가능한 솔루션입니다.


그냥 당신이 당신이 연결을 수신 할 또 다른 UUID를 할 때마다이 스레드를 호출합니다.

희망을 얻었습니다. ^^ '