我正在创建一个应该通过蓝牙连接到特定设备的应用。
我希望我的应用与该设备连接,无论它是否已配对。
现在我有了这个
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
但此功能仅连接到配对设备。 如果我的设备尚未配对,我想配对它。 不知道该怎么做。
有人可以给我任何建议吗?
答案 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();
}
然后使用上面的代码管理绑定设备。