簡體   English   中英

如何使用RxAndroidBLE在BLE中創建綁定或配對

[英]How to create Bond or Pairing in BLE using RxAndroidBLE

我想為連接設備實現密碼或與BLE設備建立連接。 我有6個字節的密鑰 ,因此我們將如何使用RxAndroid庫創建綁定或配對並將密鑰發送到BLE設備。

在建立連接時,任何人都可以給我參考或文檔鏈接或演示鏈接來實現Passkey或創建綁定或配對

提前致謝!!

首先,您需要找到附近的設備。

public void registerDeviceForAnyNEwDeviceFound() {
    // Register for broadcasts when a device is discovered.
    mBluetoothAdapter.startDiscovery();
    IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    registerReceiver(mSearchReceiver, filter);
    Log.e("STATUS", "" +
            mBluetoothAdapter.isDiscovering());
    isSearchReceiverRegistered = true;
}

// Create a BroadcastReceiver for ACTION_FOUND.
private final BroadcastReceiver mSearchReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.e("SEARCH STARTED", "TRUE");
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            // Discovery has found a device. Get the BluetoothDevice
            // object and its info from the Intent.
            try {
                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                String deviceName = device.getName();
                String deviceHardwareAddress = device.getAddress(); // MAC address
                Device mDevice = new Device();
                mDevice.setDeviceName(deviceName);
                mDevice.setDeviceAddress(deviceHardwareAddress);
                mDevice.setmBluetoothDevice(device);

                Log.e("Discovered DEVICE", deviceName);
                Log.e("BOND STATE", "" + device.getBondState());

                nearbyDeviceList.add(mDevice);
                mNearbyDeviceRecAdapter.notifyDataSetChanged();

            } catch (Exception e) {
                Log.e("EXCEPTION", e.getLocalizedMessage());
            }

        }
    }
};

然后,您需要注冊另一個BroadCastReceiver,此接收器將監聽與您要配對的設備的綁定更改。

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
            registerReceiver(mPairingReceiver, filter);

 private final BroadcastReceiver mPairingReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();

        if (action.equals(BluetoothDevice.ACTION_BOND_STATE_CHANGED)) {
            BluetoothDevice mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            //3 cases:
            //case1: bonded already
            if (mDevice.getBondState() == BluetoothDevice.BOND_BONDED) {
                Log.d(TAG, "BroadcastReceiver: BOND_BONDED.");
                Log.e(TAG, "BroadcastReceiver: BOND_BONDED." + mDevice.getName());
                mBluetoothAdapter.cancelDiscovery();

            }
            //case2: creating a bone
            if (mDevice.getBondState() == BluetoothDevice.BOND_BONDING) {
                Log.d(TAG, "BroadcastReceiver: BOND_BONDING.");
                Log.e(TAG, "BroadcastReceiver: BOND_BONDING." + mDevice.getName());
            }
            //case3: breaking a bond
            if (mDevice.getBondState() == BluetoothDevice.BOND_NONE) {
                Log.d(TAG, "BroadcastReceiver: BOND_NONE.");
                Log.e(TAG, "BroadcastReceiver: BOND_NONE." + mDevice.getName());
            }
        }
    }
};

最后,當您想與設備調用配對時:

mNearbyDeviceRecAdapter.getItemAtPosition(position).getmBluetoothDevice().createBond();

調用此語句后,它將啟動與設備的配對。

希望! 這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM