#やりたいこと
Androidで同一デバイス名のBLE機器を複数接続させる為、BluetoothLeScanner
のScanFilter
に複数のMacアドレスを指定したいです。
#現状と、発生している問題
同一のデバイス名を持った機器が周囲に多数有り、識別はMacアドレスで行っています。
setDeviceName
で一致するデバイス名の機器を全て取得して、
コールバックの時にMacアドレスが一致した物とGATT接続を行っています。
ところがこれですと、デバイス名は一致していても使用しないMacアドレスのデバイスも取得してしまい、
使用しないMacアドレスのデバイスが離れたり電源オフもdisconnect
として拾ってしまいます。
また使用しないMacアドレスのデバイスとも接続状態となってしまい、他の端末からスキャンした時に見つからなくなってしまいます。
#知りたいこと
Bluetoothの仕様では最大7台のBLE機器との接続が出来ることになっていますが、
複数のデバイス名が同じ場合に特定のMacアドレスを指定し、
指定以外のMacアドレス機器との接続を排除する方法はありませんでしょうか?
もしくは、指定以外のMacアドレスであれば切断処理が必要なのでしょうか?
#ソースコード
Java
1 2scanFilter = new ScanFilter.Builder() 3// .setDeviceAddress("00:00:00:00:00:01") 4// .setDeviceAddress("00:00:00:00:00:02") 5//複数は指定出来ない。上記記述の場合、後者が上書きされ"00:00:00:00:00:02"のみ検出する。 6// .setDeviceAddress(String[])は出来ない 7 .setDeviceName("BLE_Name").build(); 8 9ArrayList scanFilterList = new ArrayList(); 10scanFilterList.add(scanFilter); 11ScanSettings scanSettings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_BALANCED).build(); 12mBluetoothLeScanner.startScan(scanFilterList, scanSettings, mScanCallback); // スキャン開始(デバイス名で検索し、mScanCallbackの中で一致するMacアドレスとGATT接続する) 13

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/12 00:42