在Android Studio中配对蓝牙设备

时间:2017-10-20 02:27:19

标签: java android bluetooth

我正在创建一个应该通过蓝牙连接到特定设备的应用。

我希望我的应用与该设备连接,无论它是否已配对。

现在我有了这个

library(data.table)

setDT(df)
df[rep(1:.N, (end - start + 1))][, value := (start - 1) + (1:.N), by = symbol][]

#    symbol start end value
# 1:      u     9  14     9
# 2:      u     9  14    10
# 3:      u     9  14    11
# 4:      u     9  14    12
# 5:      u     9  14    13
# ... etc

但此功能仅连接到配对设备。 如果我的设备尚未配对,我想配对它。 不知道该怎么做。

有人可以给我任何建议吗?

1 个答案:

答案 0 :(得分:2)

首先请求BLUETOOTH_ADMIN权限。

然后让你的设备被发现:

private void makeDiscoverable() {
        Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
        startActivity(discoverableIntent);
        Log.i("Log", "Discoverable ");
    }

然后创建 BroadcastReceiver 以收听系统中的操作:

private BroadcastReceiver myReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Message msg = Message.obtain();
            String action = intent.getAction();
            if(BluetoothDevice.ACTION_FOUND.equals(action)){
               //Found, add to a device list
            }           
        }
    };

通过注册 BoardcastReceiver

开始搜索设备
 private void startSearching() {
        Log.i("Log", "in the start searching method");
        IntentFilter intentFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
        BluetoothDemo.this.registerReceiver(myReceiver, intentFilter);
        bluetoothAdapter.startDiscovery();
    }

设备从 BroadcastReceiver 进入列表后,从列表中选择您的设备,然后使用createBond()选择:

 public boolean createBond(BluetoothDevice btDevice)  
    throws Exception  
    { 
        Class class1 = Class.forName("android.bluetooth.BluetoothDevice");
        Method createBondMethod = class1.getMethod("createBond");  
        Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice);  
        return returnValue.booleanValue();  
    } 

然后使用上面的代码管理绑定设备。