android蓝牙配对代码,如何在Android上以编程方式配对蓝牙设备

我设法通过一个应用程序作为服务检查特定类型的设备的存在以及“设置”应用程序的修改版本,自动请求与键盘功能设备的配对过程。

我不得不说,我正在使用一个运行Android 4.0.3的自定义设备,没有外部控制(没有后退/主页/确认按钮):启动完成时配置控制器,没有任何交互,直到PIN请求是强制性的。

首先,我创建一个服务启动一个活动(android.intent.action.BOOT_COMPLETED和android.permission.RECEIVE_BOOT_COMPLETED),定期检查一个1344类设备的存在(键盘,是要求输入数据的唯一方式)on onReceive回调:

public void onReceive(Context context, Intent intent)

...

BluetoothDevice dev = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

...

if(dev.getBluetoothClass().getDeviceClass() == 1344){...}

一旦过滤,我选择可用的第一个键盘,然后我将BT地址传递给设置应用程序:

Intent btSettingsIntent = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);

btSettingsIntent.putExtra("btcontroller", dev.getAddress());

startActivityForResult(btSettingsIntent, 1);

棘手的部分是寻找最好的位置来称呼配对过程。只使用

intent.putExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, PAIRING_VARIANT_PIN);

导致我进入一个对话框,一旦关闭,我将设备配对,但不可用。

挖掘到com.Android.settings.Bluetooth的类我发现我的方式通过

createDevicePreference(CachedBluetoothDevice cachedDevice)

在DeviceListPreferenceFragment中。

从那里我比较了我之前选择的BT地址和那些可用的地址,一旦成功匹配我打电话

cachedDevice.startPairing();

我知道,这很棘手,需要访问Android源代码,但在自定义环境中它可以工作。

我希望这可能是有帮助的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值