0

現在、Android 4.3 Bluetooth Low Energy に取り組んでいます。デバイスに接続し、サービスを取得し、サービスの読み取り/書き込みを行うことができます。2 番目のデバイスに接続しようとすると、2 番目のデバイスのサービスが受信され、最初のデバイスのサービスが失われます。最初のデバイスの書き込み/読み取り特性に接続しようとすると、何も機能しません。

複数のデバイスに接続しようとした人はいますか。2 つのデバイスの Gatt をどのように初期化しますか?

4

3 に答える 3

0

SAMSUNG BLE API と Google の API には Broadcom Ble スタックがあり、Broadcom スタックは現在複数の ble デバイスをサポートしていないと思います。

于 2013-09-04T07:46:52.307 に答える
0

Samsung BLE スタック (galaxy S4) でもまったく同じ動作をしました。サムスンのコードをハッキングして修正しました:

クラス BluetoothGatt は、「すべての」検出されたサービスのリストを保持します。BluetoothGatt->discoverServices を呼び出すと、このリストがクリアされます。私は独自のクラスを駆動し、関数の動作を変更して、関連する BluetoothDevice のサービスのみを削除しました。これは私のコードです:

public class MyBluetoothGatt extends BluetoothGatt {

    MyBluetoothGatt(Context paramContext, BluetoothProfile.ServiceListener paramServiceListener)
      {
        super(paramContext, paramServiceListener);
      }

    public final boolean discoverServices(BluetoothDevice paramBluetoothDevice)
      {
        if (paramBluetoothDevice == null)
        {
          Log.e("BtGatt.BluetoothGatt", "discoverServices() - device is null ");
          return false;
        }
        Log.d("BtGatt.BluetoothGatt", "discoverServices() - device: " + paramBluetoothDevice.getAddress());

        if ((d == null) || (this.f == 0))
          return false;
// old code     this.h.clear();

//--new code
        @SuppressWarnings("rawtypes")
        Iterator localIterator = this.h.iterator();
        while (localIterator.hasNext())
        {
          BluetoothGattService localBluetoothGattService;
          localBluetoothGattService = (BluetoothGattService)localIterator.next();

          if (localBluetoothGattService.a().equals(paramBluetoothDevice))
          {
              this.h.remove(paramBluetoothDevice);
          }
        }       
//end new code      


        this.d.discoverServices(this.f, paramBluetoothDevice.getAddress());


        return true;
      }

}

また、独自のクラスを派生できるようにするために、クラス エディターを使用して「最終」修飾子の一部を削除する必要がありました。それは大きなハックでしたが、今では美しく機能しています。公式リリースが公開されたら、S4 を Android 4.3 にアップグレードし、コードを移植する予定です。指を交差させれば、Android 4.3 でも機能します。

于 2013-09-13T06:26:06.600 に答える