0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

flutter_blue_plusのスキャンでデバイスが見つからなった時にチェックすること(自分用メモ)

Last updated at Posted at 2024-08-26

デバイスがスキャンで見つからない場合の対処方法

FlutterBluePlusを使用してBLEデバイスをスキャンしてもデバイスが見つからない場合、いくつかの考えられる原因とその対処方法があります。以下にそれぞれのケースについて説明します。

1. エミュレーターを使用している

エミュレーターではなく、物理デバイスを使用してください。エミュレーターはBluetooth機能が制限されているため、BLEデバイスのスキャンが正しく行えない場合があります。物理デバイスを使用してアプリをテストすることが重要です。

2. 別のBLEスキャナーアプリを試す

別のBLEスキャナーアプリを使用して、デバイスが検出できるか確認してください。以下のアプリがオススメです:

iOS: nRF Connect
Android: BLE Scanner
これらのアプリをインストールして、デバイスが表示されるか確認してください。

3. デバイスがBluetooth Classicを使用している

ヘッドホン、スピーカー、キーボード、マウス、ゲームパッド、プリンターなどのデバイスは、Bluetooth Classicを使用していることがあります。これらのデバイスはシステム設定で見つかるかもしれませんが、FlutterBluePlusでは接続できません。FlutterBluePlusはBluetooth Low Energy(BLE)のみをサポートしています。

4. デバイスのadvertisingが停止している

デバイスがアドバタイジングを停止している可能性があります。以下の手順を試してみてください:

  1. デバイスを再起動する
  2. デバイスを「ディスカバリーモード」にする
  3. スマートフォンが自動的にデバイスに接続したか確認する
  4. 他のアプリが既にデバイスに接続していないか確認する
  5. 他のスマートフォンが既にデバイスに接続していないか確認する
    また、以下のコードを使用してシステムに接続されているデバイスを確認できます:
List<BluetoothDevice> system = await FlutterBluePlus.systemDevices;
for (var d in system) {
    print('${d.platformName} already connected to! ${d.remoteId}');
    if (d.platformName == "myBleDevice") {
         await d.connect();
    }
}

5. スキャンフィルターが間違っている

スキャンフィルターが間違っている可能性があります。すべてのスキャンフィルターを一旦削除してみてください。また、withServicesを使用する場合、デバイスがadvertisingでそのサービスUUIDを積極的にサポートしている必要があります。

6. Android: startScanを頻繁に呼び出しすぎている

Androidでは、30秒間に5回以上startScanを呼び出すことはできません。これはプラットフォームの制限です。そのため、スキャンの頻度を調整するか、必要に応じてタイミングをずらしてスキャンを行うようにしてください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?