2012-04-25 7 views
6

私は作業クライアント - サーバーのBluetoothを理解しようとしています。アンドロイドはクライアントです。 PCはサーバーです。リモートBluetooth

codeが見つかりました。これはsamsung銀河10.1(アンドロイド3.2)を動作させましたが、samsung銀河(アンドロイド2.3.3)とhtc野火(アンドロイド2.2)は動作しません。

MY_UUID = UUID.fromString("04c6093b-0000-1000-8000-00805f9b34fb"); 

04-25 18:32:37.023: D/BluetoothCommandService(13665): setState() 1 -> 2 
04-25 18:32:37.033: I/BluetoothCommandService(13665): BEGIN mConnectThread 
04-25 18:32:37.063: E/BluetoothService.cpp(102): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session) 
04-25 18:32:37.103: E/BluetoothCommandService(13665): Unable to start Service Discovery 
04-25 18:32:37.103: E/BluetoothCommandService(13665): java.io.IOException: Unable to start Service Discovery 
04-25 18:32:37.103: E/BluetoothCommandService(13665): at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:367) 
04-25 18:32:37.103: E/BluetoothCommandService(13665): at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:201) 
04-25 18:32:37.103: E/BluetoothCommandService(13665): at com.luugiathuy.apps.remotebluetooth.BluetoothCommandService$ConnectThread.run(BluetoothCommandService.java:258) 
04-25 18:32:37.103: D/BluetoothCommandService(13665): setState() 2 -> 1 

答えて

6

お使いのデバイスは、サービスの発見(私はそう思う)で失敗しました。

  1. 多くのSamsungデバイスとHTCデバイスが、特にL2CAP/HIDプロファイルのBT問題について読んでいます。 SOLN:あなたは溶液中で言及した上記のいずれかを使用している場合は、

SPP 00001101-0000-1000-、標準のUUIDを使用してみてくださいL2CAP

  • を使用している場合は、SPPまたはRFCOMMを使用することができます8000-00805F9B34FB

    RFCOMM 00000003-0000-1000-8000-00805F9B34FB

    編集

    代わりにこれを試してみてください、以下の方法のようなあなたのソケット接続何か

    private static BluetoothSocket createBluetoothSocket(
         int type, int fd, boolean auth, boolean encrypt, String address, int port){ 
        try { 
         Constructor<BluetoothSocket> constructor = BluetoothSocket.class.getDeclaredConstructor(
           int.class, int.class,boolean.class,boolean.class,String.class, int.class); 
         constructor.setAccessible(true); 
         BluetoothSocket clientSocket = (BluetoothSocket) 
          constructor.newInstance(type,fd,auth,encrypt,address,port); 
         return clientSocket; 
        }catch (Exception e) { return null; } 
    } 
    
  • +0

    は機能しません、より多くのオプションがありますか? – alezhka

    +0

    それはアンドロイド2.3を動かしていますが、2.2 – alezhka

    +0

    はあなたに何か新しいエラーや同じ問題はありませんか? –

    2

    を取得するためにリフレクションを使用してみてください可能性があります

    static int sdk = Integer.parseInt(Build.VERSION.SDK); 
    
    private static final UUID MY_UUID = 
        UUID.fromString((sdk<=8||sdk>=11)?"04c6093b-0000-1000-8000-00805f9b34fb":"00001101-0000-1000-8000-00805F9B34FB"); 
    

    それは私のために働いた:)
    2.1でテスト - 3.3と4.0.4アンドロイド版。

    +0

    It私のために働いています。しかし、なぜ?? – Hugo

    +0

    新しいスマートフォンは古いものと同じBluetoothプロトコルを使用しないため、そのUUIDも変更されているからだと思います。 – nonozor