保存可发现的蓝牙LE设备列表?

问题描述:

如何在Android中保存可发现的BLE设备列表?保存可发现的蓝牙LE设备列表?

按照我的实现startDeviceScan()方法:

private String[][] mNearestDevices; 
// ... 

public String[][] startDeviceScan() { 
    Log.i(TAG, "Start device scan"); 

    mNearestDevices = new String[n][2]; 
    mCounter = 0; 

    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      mScanning = false; 
      mBluetoothAdapter.stopLeScan(mBleScanCallback); 
     } 
    }, SCAN_PERIOD); 

    mScanning = true; 
    mBluetoothAdapter.startLeScan(mBleScanCallback); 

    return mNearestDevices; 
} 

这是设备扫描回调

private BluetoothAdapter.LeScanCallback mBleScanCallback = new BluetoothAdapter.LeScanCallback() { 
      @Override 
      public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { 
       Runnable r = new Runnable() { 
        @Override 
        public void run() { 
         Log.i(TAG, "Name: " + device.getName() + " (" + device.getAddress() + ")"); 
         mNearestDevices[mCounter][0] = device.getName(); 
         mNearestDevices[mCounter][1] = device.getAddress(); 
        } 
       }; 
       r.run(); 
      } 
     }; 

另一个问题。 如何等待扫描完成?

+0

你可以从mNearestDevices设备列表并保存。 –

你必须改变onLeScan方式类似:

@Override 
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) 
{ 

    Log.i(TAG, "Name: " + device.getName() + " (" + device.getAddress() + ")"); 
    mNearestDevices[mCounter][0] = device.getName(); 
    mNearestDevices[mCounter][1] = device.getAddress(); 
    mCounter++; 
}