Android蓝牙:配对设备列表

Android蓝牙:配对设备列表,第1张

概述我有一个带SPP配置文件和蓝牙版本2.1的蓝牙设备. 我有一个连接到该设备并与之通信的应用程序.该设备使用“Just Works”配对技术. 我在某些手机上遇到问题,如三星Galaxy平板电脑,Galaxy S. 问题是在用户退出应用程序后,我正在关闭套接字并断开与设备的连接.成功断开连接后,会发现设备的条目已从配对设备列表中删除. 我没有使用平板电脑,但我确实编写了一个使用SPP for And 我有一个带SPP配置文件和蓝牙版本2.1的蓝牙设备.
我有一个连接到该设备并与之通信的应用程序.该设备使用“Just Works”配对技术.

我在某些手机上遇到问题,如三星galaxy平板电脑,galaxy S.

问题是在用户退出应用程序后,我正在关闭套接字并断开与设备的连接.成功断开连接后,会发现设备的条目已从配对设备列表中删除.

解决方法 我没有使用平板电脑,但我确实编写了一个使用SPP for Android手机的应用程序.我发现,为了使蓝牙稳定,我必须手动绑定我想要与之通信的设备.我们使用下面的代码从应用程序中启动绑定,它应该保留绑定,就像您通过设置菜单手动配对一样.

这是一般流程:
1)注册broadcastReceiver以监听BluetoothDevice.ACTION_BOND_STATE_CHANGED
2)设备发现后,您应该有一个BluetoothDevice对象.
3)使用反射在BluetoothDeviceObject上调用’createBond’方法
3a)在打开插座之前等待粘合状态改变事件

BluetoothDevice device = {obtained from device discovery};Method m = device.getClass().getmethod("createBond",(Class[])null);m.invoke(device,(Object[])null);int bondState = device.getBondState();if (bondState == BluetoothDevice.BOND_NONE || bondState == BluetoothDevice.BOND_BONDING){    waitingForBonding = true; // Class variable used later in the broadcast receiver    // Also...I have the whole bluetooth session running on a thread.  This was a key point for me.  If the bond state is not BOND_BONDED,I wait here.  Then see the snippets below    synchronized(this)    {        wait();    }}

4)等待债券状态从BOND_BONDING变为BOND_BONDED

在broadcastRecIEver中:

public voID onReceive(Context context,Intent intent){    if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(intent.getAction()))    {        int prevBondState = intent.getIntExtra(BluetoothDevice.EXTRA_PREVIoUS_BOND_STATE,-1);        int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE,-1);        if (waitingForBonding)        {            if (prevBondState == BluetoothDevice.BOND_BONDING)            {                // check for both BONDED and NONE here because in some error cases the bonding fails and we need to fail gracefully.                if (bondState == BluetoothDevice.BOND_BONDED || bondState == BluetoothDevice.BOND_NONE)                {                    // safely notify your thread to continue                }            }        }    }}

5)打开插座并进行通信

你也可以通过反射’removeBond’方法从配对列表中删除你的设备.

希望这可以帮助!

总结

以上是内存溢出为你收集整理的Android蓝牙:配对设备列表全部内容,希望文章能够帮你解决Android蓝牙:配对设备列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1132434.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存