4.3の新しいBTLEAPIを使用してNexus7にBTLESERVERを実装しようとしています。私はいくつかの問題に直面しています。まず、SDKの例はありません。唯一の例はクライアント用です。第二に、ドキュメントは実際に間違ったことをするようにあなたに告げています。 BluetoothGattServer
オブジェクトを取得するには、BluetoothAdapter.getProfileProxy() with a BluetoothProfile.GATT_SERVER
パラメーターを使用する必要があると記載されています。このアプローチは機能しますが、BluetoothGattServerCallback
の実装をBLEスタックにリンクすることはできません。 (このコールバックは、とりわけクライアントの読み取りおよび書き込み要求に応答する方法です。)ただし、問題58582に遭遇した後、開発者は、コールバックをパラメーターとして受け取り、BluetoothGattServer
を返す新しいBluetoothManager.openGattServer()
メソッドを指摘しました。オブジェクト。さて、1つの問題が解決しました。
次の問題はもっと問題があります。 BluetoothGattServer
のドキュメントには、このクラスを使用してBluetoothLEのサービスと特性を作成およびアドバタイズできると記載されています。サービスの作成などは問題ありませんでしたが、宣伝の始め方を怠っています。クラス自体または私が見つけることができる他のクラスにはメソッドがありません。
誰かがこれを行う方法を知っていますか?現時点で私が見ることができるのは、クライアントが使用するのと同じアプローチを使用することだけですが、そのアプローチにはスキャンが含まれます(これは広告ではありません)。すべてのドキュメントはさらに、BluetoothAdapter.startLeScan()
IS実際にスキャンするためだけのものであることを示唆しています。
では、すべてのサービス、特性、および記述子が配置されたら、どのようにアドバタイズメントを呼び出すのですか?
私が理解しているように、Android実装は中央デバイスとしてのみ機能し、周辺デバイスとしては機能しません。BluetoothLowEnergyでは、周辺機器のみがアドバタイズできます。中央デバイスはからのアドバタイズをスキャンできます。周辺機器、および(ある種の)アドバタイズメントへの応答として接続要求を送信して、周辺機器への接続を作成します。
BLEでは、概念Central/PeripheralとServer/Clientの間に違いがあります。
セントラル/ペリフェラルはネットワークアーキテクチャに関連しており、セントラルはスターのハブであり、1つ以上のペリフェラルが接続されています。通常、電話、タブレット、またはコンピューターになります。周辺機器は、一度に1つのセントラルにのみ接続できます。
サーバー/クライアント(GATTサーバー/クライアント)は、デバイスに保持され、接続を介して通信される可能性のあるデータに関連する、より高いレベルの概念です。中央デバイスと周辺デバイスの両方でGATTサーバーとGATTクライアントを実装できますが、両方を実装する必要はありません。
だからあなたの質問に答えるために:あなたは広告を呼び出すことはできません。 1つまたは複数の周辺機器に接続できるようにするには、周辺機器のスキャンを開始する必要があります。
お役に立てれば。
APIレベル21が必要になります。
import Android.bluetooth.le;
...
...
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter myBluetoothAdapter = bluetoothManager.getAdapter();
BluetoothLeAdvertiser myBluetoothLeAdvertiser = myBluetoothAdapter.getBluetoothLeAdvertiser ();
myBluetoothLeAdvertiser.startAdvertising (AdvertiseSettings settings, AdvertiseData advertiseData, AdvertiseCallback callback);
便利なリンクは次のとおりです: https://developer.Android.com/about/versions/Android-5.0.html
getProfileProxy
がGATT
またはGATT_SERVER
リクエストに応答していないようです。 APIは広告サポートを提案します ただし、背後に実装されているコードはまだありません。 (Android Issue Tracker)
NFCが導入され、Googleが繰り返し、フォローアップリリースでより充実した機能を追加したときに、同じ途中で実装されたAPIが最初にリリースされました。
私が見ているように、BLE広告機能(別名周辺機器モード)はAndroidキットカットの次のバージョン4.4.3で追加されます。来週リリースされる予定ですが、変更ログはすでにあります誤ってリークされた場合は、Googleキャッシュまたは2554行の ここ を参照してください:ペリフェラルモード(3/4):ペリフェラルモードAPIを追加 。
もうすぐわかると思います。