0

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

按照我对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();
            }
        };

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

4

1 回答 1

0

您必须像这样更改 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++;
}
于 2016-04-26T10:57:16.007 回答