2017-05-31 15 views
1

私は、BLEデバイスのスキャンを開始するために、このコードをしました:BLEデバイスのスキャン時間を短縮できますか?

Log.i("timeChar", "Begin"); 
customBluetoothManager.scanLeDevice(true); 

を次にscanLeDevice()BLEスキャン開始のためのBluetoothアダプタを管理している、呼び出されています。今、

public void scanLeDevice(final boolean enable) { 
     mHandler = new Handler(); 

     if (enable) { 
      // Stops scanning after a pre-defined scan period. 
      mHandler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        mBluetoothAdapter.stopLeScan(mLeScanCallback); 
       } 
      }, SCAN_PERIOD); 

      mBluetoothAdapter.startLeScan(mLeScanCallback); 
     } else { 
      mBluetoothAdapter.stopLeScan(mLeScanCallback); 
     } 
    } 

をとスキャンで検出されたデバイスごとにコールバック:

// Device scan callback. 
    private BluetoothAdapter.LeScanCallback mLeScanCallback = 
      new BluetoothAdapter.LeScanCallback() { 
       @Override 
       public void onLeScan(final BluetoothDevice device, int rssi, 
            byte[] scanRecord) { 

        String name = device.getName(); 
        if (name != null && name.compareTo(bluetoothDeviceName) == 0) { 
          Log.i("timeChar", "Device found"); 
        } 
       } 
      }; 

私は私のBLEデバイスをスキャンするつもりたびに(つまり、周辺的な役割を持っている)、それがta約11秒でそれを検出します。

05-31 17:32:39.139 27545-9668/app I/timeChar: Begin 
05-31 17:32:50.149 27545-27545/app I/timeChar: Device found 

この時間を短縮する方法はありますか?

+1

:マルチンによって示されるように、あなたはそうするのと同じくらい簡単に行うことができますhttps://atmosphere.anaren.com/wiki/Android_Issues_With_Bluetooth_Low_Energyため –

+0

感謝そのwiki!私は見てみましょう:) – adri1992

答えて

0

BLEスキャンとデバイスアドバタイズは、間隔をおいて実行されます。広告間の間隔が長い場合、秒を言うと、アンドロイドがそれを見逃す可能性があります。アプリ側からこの問題を解決するために:あなたは、後でので、あなたが考慮に入れる必要があるためには、スキャン方法

mBluetoothAdapter.getBluetoothLeScanner().startScan(null, settings, mLeScanCallback); 
0

に渡す

//global ScanSettings settings; 
ScanSettings.Builder settingBuilder = new ScanSettings.Builder(); 
settingBuilder.setScanMode(SCAN_MODE_LOW_LATENCY); 
settings = settingBuilder.build(); 

  1. BLEビーコンに設定された定義済みの間隔。バッテリを節約するために、BLEビーコンによって送信される各パケット間の時間間隔を定義できます(100ミリ秒から数秒)。したがって、まずビーコンの時間間隔を確認してください。

  2. 新しいパケットが受信されたことを示すためにAndroid OSに設定された時間(コールバック機能)。セルフプロモーションは、私がBLEに関するこの記事は興味深い見つけながら

scanSettings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();

関連する問題