如何小米删除蓝牙配对信息已经配对的蓝牙设备

我们都知道两个蓝牙设备之间要进行数据交互,必须首先建立相应服务
的链接,在连接之前必须进行配对,因为只有经过配对前的搜索才能得
到设备时钟用于时钟同步,必须通过PIN码和蓝牙地址计算出认证码才
能进行之后的认证及数据交互。这个在我的另外一篇文章中已有所介绍.
经过配对后,如果有人机界面我们会发现设备会出现在我们的配对列表
中,如果删除了该设备后,该设备通过其配对列表与本地设备进行连接
时,本地设备会要求重新配对,如果只是在界面上删除了而实际并没有
删除掉该配对设备的相关信息,远程设备可以无需配对便链接到本地设
备,那么配对列表中究竟存了哪些信息,使得可以不用配对便可以直接
连接,是不是只要配对过以后便不用再配对了呢?
第一个问题答案就是时钟和认证码,认证码是一种蓝牙安全机制,它是
通过由PIN码和蓝牙地址共同计算得出的一个128bit的数据。
第二个问题的答案是不是。因为在数据交互过程中两个蓝牙设备会定期
验证该认证码,如果两次验证失败,设备便会认为该认证码失效,那么
以后必须重新配对才能建立连接。
为什么有时明明删除了配对设备,而该设备可以不经配对便与本地设备
建立连接呢?
答 :删除配对设备并不是什么时候都能够删除的,如果当前设备处于连
接中,这个时候删除经常会失败,这样虽然在人机界面已经删除了,其
实在蓝牙芯片内部还没有真正删除,这样远程设备便可以无需配对便链
接到本地设备,所以建议在关掉蓝牙时或者断开任何连接时再执行删除
配对列表的操作。
旗下网站:
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号查看: 8986|回复: 2
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID690990阅读权限20帖子积分106金币146 注册时间
A2.安卓瓦力, 积分 106, 距离下一级还需 74 积分
积分106金币146 注册时间
本帖最后由 ttup5151 于
14:39 编辑
如何删除之前配对的蓝牙设备记录?
安卓论坛 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID3263217阅读权限20帖子积分125金币130 注册时间
A2.安卓瓦力, 积分 125, 距离下一级还需 55 积分
积分125金币130 注册时间
管理应用程序 里面 找到蓝牙&&清除数据&&关机重启 OK
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID690990阅读权限20帖子积分106金币146 注册时间
A2.安卓瓦力, 积分 106, 距离下一级还需 74 积分
积分106金币146 注册时间
谢谢2楼,试过这个方法,不起作用。。。
蓝牙里面现在好多个记录,郁闷
Powered by> 博客详情
如何实现android蓝牙开发&自动配对连接,并不弹出提示框
&( 15:27:36)
我就开始查找怎么关闭这个蓝牙配对提示框,后面还是伟大的android源码帮助了我。
在源码 BluetoothDevice 类中还有两个隐藏方法
cancelBondProcess()和cancelPairingUserInput()
这两个方法一个是取消配对进程一个是取消用户输入
下面是自动配对的代码
Mainfest,xml注册
&&/code&receiver&android:name=".BluetoothConnectActivityReceiver"&&
&&&&&&/code&intent-filter&
&&&&&&&&&&/code&action&android:name="android.bluetooth.device.action.PAIRING_REQUEST"&/&
&&&&&/&/code&intent-filter&
&/&/code&receiver&
自己在收到广播时处理并将预先输入的密码设置进去
public&class&BluetoothConnectActivityReceiver&extends&BroadcastReceiver
&&&&String strPsw =&"0";
&&&&@Override
&&&&public&void&onReceive(Context context, Intent intent)
&&&&&&&&// TODO Auto-generated method stub
&&&&&&&&if&(intent.getAction().equals(
&&&&&&&&&&&&&&&&"android.bluetooth.device.action.PAIRING_REQUEST"))
&&&&&&&&&&&&BluetoothDevice btDevice = intent
&&&&&&&&&&&&&&&&&&&&.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
&&&&&&&&&&&&// byte[] pinBytes = BluetoothDevice.convertPinToBytes("1234");
&&&&&&&&&&&&// device.setPin(pinBytes);
&&&&&&&&&&&&Log.i("tag11111",&"ddd");
&&&&&&&&&&&&try
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&ClsUtils.setPin(btDevice.getClass(), btDevice, strPsw);&// 手机和蓝牙采集器配对
&&&&&&&&&&&&&&&&ClsUtils.createBond(btDevice.getClass(), btDevice);
&&&&&&&&&&&&&&&&ClsUtils.cancelPairingUserInput(btDevice.getClass(), btDevice);
&&&&&&&&&&&&}
&&&&&&&&&&&&catch&(Exception e)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&// TODO Auto-generated catch block
&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&&&}
import&java.lang.reflect.F
import&java.lang.reflect.M
import&android.bluetooth.BluetoothD
import&android.util.L
public&class&ClsUtils
&&&&static&public&boolean&createBond(Class btClass, BluetoothDevice btDevice)
&&&&&&&&&&&&throws&Exception
&&&&&&&&Method createBondMethod = btClass.getMethod("createBond");
&&&&&&&&Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice);
&&&&&&&&return&returnValue.booleanValue();
&&&&static&public&boolean&removeBond(Class btClass, BluetoothDevice btDevice)
&&&&&&&&&&&&throws&Exception
&&&&&&&&Method removeBondMethod = btClass.getMethod("removeBond");
&&&&&&&&Boolean returnValue = (Boolean) removeBondMethod.invoke(btDevice);
&&&&&&&&return&returnValue.booleanValue();
&&&&static&public&boolean&setPin(Class btClass, BluetoothDevice btDevice,
&&&&&&&&&&&&String str)&throws&Exception
&&&&&&&&try
&&&&&&&&&&&&Method removeBondMethod = btClass.getDeclaredMethod("setPin",
&&&&&&&&&&&&&&&&&&&&new&Class[]
&&&&&&&&&&&&&&&&&&&&{byte[].class});
&&&&&&&&&&&&Boolean returnValue = (Boolean) removeBondMethod.invoke(btDevice,
&&&&&&&&&&&&&&&&&&&&new&Object[]
&&&&&&&&&&&&&&&&&&&&{str.getBytes()});
&&&&&&&&&&&&Log.e("returnValue",&""&+ returnValue);
&&&&&&&&catch&(SecurityException e)
&&&&&&&&&&&&// throw new RuntimeException(e.getMessage());
&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&catch&(IllegalArgumentException&e)
&&&&&&&&&&&&// throw new RuntimeException(e.getMessage());
&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&catch&(Exception e)
&&&&&&&&&&&&// TODO Auto-generated catch block
&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&return&true;
&&&&// 取消用户输入
&&&&static&public&boolean&cancelPairingUserInput(Class btClass,
&&&&&&&&&&&&BluetoothDevice device)
&&&&throws&Exception
&&&&&&&&Method createBondMethod = btClass.getMethod("cancelPairingUserInput");
&&&&&&&&// cancelBondProcess()
&&&&&&&&Boolean returnValue = (Boolean) createBondMethod.invoke(device);
&&&&&&&&return&returnValue.booleanValue();
&&&&// 取消配对
&&&&static&public&boolean&cancelBondProcess(Class btClass,
&&&&&&&&&&&&BluetoothDevice device)
&&&&throws&Exception
&&&&&&&&Method createBondMethod = btClass.getMethod("cancelBondProcess");
&&&&&&&&Boolean returnValue = (Boolean) createBondMethod.invoke(device);
&&&&&&&&return&returnValue.booleanValue();
&&&&static&public&void&printAllInform(Class clsShow)
&&&&&&&&try
&&&&&&&&&&&&// 取得所有方法
&&&&&&&&&&&&Method[] hideMethod = clsShow.getMethods();
&&&&&&&&&&&&int&i =&0;
&&&&&&&&&&&&for&(; i & hideMethod. i++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&Log.e("method name", hideMethod[i].getName() +&";and the i is:"
&&&&&&&&&&&&&&&&&&&&&&&&+ i);
&&&&&&&&&&&&}
&&&&&&&&&&&&// 取得所有常量
&&&&&&&&&&&&Field[] allFields = clsShow.getFields();
&&&&&&&&&&&&for&(i =&0; i & allFields. i++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&Log.e("Field name", allFields[i].getName());
&&&&&&&&&&&&}
&&&&&&&&catch&(SecurityException e)
&&&&&&&&&&&&// throw new RuntimeException(e.getMessage());
&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&catch&(IllegalArgumentException&e)
&&&&&&&&&&&&// throw new RuntimeException(e.getMessage());
&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&catch&(Exception e)
&&&&&&&&&&&&// TODO Auto-generated catch block
&&&&&&&&&&&&e.printStackTrace();
&执行时直接使用:
public&static&boolean&pair(String strAddr, String strPsw)
&&&&&&&&boolean&result =&false;
&&&&&&&&BluetoothAdapter bluetoothAdapter = BluetoothAdapter
&&&&&&&&&&&&&&&&.getDefaultAdapter();
&&&&&&&&bluetoothAdapter.cancelDiscovery();
&&&&&&&&if&(!bluetoothAdapter.isEnabled())
&&&&&&&&&&&&bluetoothAdapter.enable();
&&&&&&&&if&(!BluetoothAdapter.checkBluetoothAddress(strAddr))
&&&&&&&&{&// 检查蓝牙地址是否有效
&&&&&&&&&&&&Log.d("mylog",&"devAdd un effient!");
&&&&&&&&BluetoothDevice device = bluetoothAdapter.getRemoteDevice(strAddr);
&&&&&&&&if&(device.getBondState() != BluetoothDevice.BOND_BONDED)
&&&&&&&&&&&&try
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&Log.d("mylog",&"NOT BOND_BONDED");
&&&&&&&&&&&&&&&&ClsUtils.setPin(device.getClass(), device, strPsw);&// 手机和蓝牙采集器配对
&&&&&&&&&&&&&&&&ClsUtils.createBond(device.getClass(), device);
&&&&&&&&&&&&&&&&remoteDevice =&// 配对完毕就把这个设备对象传给全局的remoteDevice
&&&&&&&&&&&&&&&&result =&true;
&&&&&&&&&&&&}
&&&&&&&&&&&&catch&(Exception e)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&// TODO Auto-generated catch block
&&&&&&&&&&&&&&&&Log.d("mylog",&"setPiN failed!");
&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&&&}&//
&&&&&&&&else
&&&&&&&&&&&&Log.d("mylog",&"HAS BOND_BONDED");
&&&&&&&&&&&&try
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&ClsUtils.createBond(device.getClass(), device);
&&&&&&&&&&&&&&&&ClsUtils.setPin(device.getClass(), device, strPsw);&// 手机和蓝牙采集器配对
&&&&&&&&&&&&&&&&ClsUtils.createBond(device.getClass(), device);
&&&&&&&&&&&&&&&&remoteDevice =&// 如果绑定成功,就直接把这个设备对象传给全局的remoteDevice
&&&&&&&&&&&&&&&&result =&true;
&&&&&&&&&&&&}
&&&&&&&&&&&&catch&(Exception e)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&// TODO Auto-generated catch block
&&&&&&&&&&&&&&&&Log.d("mylog",&"setPiN failed!");
&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&&&}
&&&&&&&&return&
人打赏支持
码字总数 209109
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区原油, 积分 12, 距离下一级还需 38 积分
原油, 积分 12, 距离下一级还需 38 积分
原油, 积分 12, 距离下一级还需 38 积分
主题 : 1|帖子 : 2|积分 : 12
该用户从未签到
平时不动蓝牙,前几天连接同事的音响,顺手取消了我之前配对过的自己音响的蓝牙设备。结果现在听歌开蓝牙搜不到我的音响了。重启手机,重启音响都不行。。。感觉是只要点击取消保存,就再也不会配对到了。不知道是不是系统问题。求相关工程师解答!!急!
---来自一加社区手机客户端
柴油, 积分 7574, 距离下一级还需 2426 积分
柴油, 积分 7574, 距离下一级还需 2426 积分
柴油, 积分 7574, 距离下一级还需 2426 积分
主题 : 43|帖子 : 2109|积分 : 7574
试试,应用中清除一下蓝牙的缓存
---来自一加社区手机客户端
主题 : 0|帖子 : 3092|积分 : 3256
请问您现在手机是什么版本的系统呢?(氢os:设置-关于手机-固件版本号)建议您进入设置-应用与权限-应用列表-全部中找到“蓝牙共享”清除数据和缓存后再重新搜索连接看是否可以正常,您尝试使用其他的设备比如蓝牙耳机是否可以搜索到呢?
温馨提示:为了能及时处理好您的问题,请您在本条信息的楼层左下点击“回复”按键直接和我沟通,若您在新的楼层发表信息或直接点击“快速回复”可能我们将暂时接收不到,还请您谅解。
主题 : 0|帖子 : 34|积分 : 304
该用户从未签到
MSM__1923_user_MP4_release版本上使用小米和sansui音箱测试10多次,不能重现该问题,也有可能音箱本身出问题,方便的话,请提供蓝牙音箱品牌和型号
深圳市万普拉斯科技有限公司 版权所有(||||||||||||||||||
查看: 4525|回复: 7
在线时间16 小时经验值78 最后登录注册时间帖子阅读权限30UID
初中生, 积分 78, 距离下一级还需 22 积分
该用户从未签到
G币138 最后登录注册时间
牛2如何删除蓝牙中原来已配对的设备?找了半天好像没有删除的选项,只有解除配对的选项,解除配对后设备还是在列表中。时间长了里面的设备越来越多,看了都不舒服,望高手解决。
在线时间27 小时经验值66 最后登录注册时间帖子阅读权限30UID2295944
初中生, 积分 66, 距离下一级还需 34 积分
该用户从未签到
G币9 最后登录注册时间
说的没错啊&&我都是找不到怎样删除& &
在线时间388 小时经验值473 最后登录注册时间帖子阅读权限60UID6290064
大学本科, 积分 473, 距离下一级还需 227 积分
TA的每日心情奋斗 21:26签到天数: 1 天[LV.1]初来乍到
G币18 最后登录注册时间
我的也没有找到,晕了
在线时间80 小时经验值319 最后登录注册时间帖子阅读权限50UID5985971
大学专科, 积分 319, 距离下一级还需 81 积分
TA的每日心情开心 21:12签到天数: 1 天[LV.1]初来乍到
G币63 最后登录注册时间
同问同问同问同问
在线时间0 小时经验值59 最后登录注册时间帖子阅读权限30UID
初中生, 积分 59, 距离下一级还需 41 积分
该用户从未签到
G币0 最后登录注册时间
好,应该顶,今后继续努力
在线时间520 小时经验值1783 最后登录注册时间帖子阅读权限90UID7157391
硕士, 积分 1783, 距离下一级还需 717 积分
TA的每日心情衰 21:29签到天数: 19 天[LV.4]偶尔看看III
G币1103 最后登录注册时间
貌似无解……
在线时间264 小时经验值166 最后登录注册时间帖子阅读权限40UID1336123
高中生, 积分 166, 距离下一级还需 34 积分
该用户从未签到
G币1088 最后登录注册时间
先取消配对,再到“应用程序管理—全部—蓝牙共享”里清除数据,再关机重启
浏览过的版块
Powered by}

我要回帖

更多关于 蓝牙设备配对无法连接 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信