2012-03-01 8 views
0

私はいくつかのデバイスをBT経由でサーバーデバイスに接続しています。 私は、接続できるようにいくつかのUUIDを持っています。BTソケットに使用されているUUIDを見つける

ただし、デバイスが切断されることがあるため、サーバーを検出可能にして、デバイスが元々使用していたのと同じUUIDを使用する必要があります。そうすれば、そのUUIDが利用可能であることが確かめられます。

デバイスに接続するために使用されたUUIDを知る方法はありますか?

答えて

0

私はあなたの問題を理解していますが、私はAndroid SDKがBluetoothSocketに関連付けられた内部UUIDを取得する方法を公開していないことに気づきましたが、Androidソースコードに表示されていればBluetoothSocketは関連する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 
     } 
    } 
} 

[OK]を、これが唯一の解決策ではありませんが、あなたが与えられたのServerSocketのために受け入れBluetoothSocketsでUUIDを関連付けたい場合は、それが可能なソリューションです。


はちょうどあなたがあなたとの接続を希望別のUUIDを持つたびに、このスレッドを呼び出します。

希望しました^^ '

関連する問題