android bluetooth 蓝牙设备之间自动配对

android bluetooth 蓝牙设备之间自动配对

ID:12588140

大小:54.86 KB

页数:20页

时间:2018-07-17

android bluetooth 蓝牙设备之间自动配对_第1页
android bluetooth 蓝牙设备之间自动配对_第2页
android bluetooth 蓝牙设备之间自动配对_第3页
android bluetooth 蓝牙设备之间自动配对_第4页
android bluetooth 蓝牙设备之间自动配对_第5页
资源描述:

《android bluetooth 蓝牙设备之间自动配对》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AndroidBluetooth学习(3)蓝牙设备之间自动配对0人收藏此文章, 我要收藏发表于6个月前(2013-03-2112:01),已有654次阅读,共0个评论前言(android2.3版本,4.0版本由于是随机获取pin值,没有研究过):   1、蓝牙设备之间自动配对,需要两个设备都安装进行配对的apk(网上好多自动配对的帖子都没有说明情况)   2、在自动匹配的时候想通过反射调用BluetoothDevice的setPin、createBond、cancelPairingUserInput实现设置密钥、配对请求创建、取消

2、密钥信息输入等。      1)createBond()创建,最终会调到源码的BluetoothService的createBond(Stringaddress)方法,通过对源码浅显的了解,createBond主要是写入匹配密钥(BluetoothService的writeDockPin())以及进入jni注册回调函数onCreatePairedDeviceResult观察匹配结果比如:  //Pinsdidnotmatch,orremotedevicedidnotrespondtopin      //requestintime

3、            //Werejectedpairing,ortheremotesiderejectedpairing.This      //happensifeithersidepresses'cancel'atthepairingdialog.            //Notsureifthishappens             //Otherdeviceisnotrespondingatall            //alreadybonded等,在jni中创建了进行匹配的device("CreatePair

4、edDevice"),这时bluetooth会发送一个ACTION_PAIRING_REQUEST的广播,只有当前会出现密钥框的蓝牙设备收到。写完密钥之后,发送广播给另外一个蓝牙设备接收,然后打开密钥输入框进行匹配。      2)setPin()设置密钥,通过查看setting源码,发现在确认输入密钥之后会调用setPin()(如果点取消,就会调用cancelPairingUserInput,取消密钥框),setPin具体通过D-BUS做了什么没有去深究,但是在调用setPin的时候会remove掉一个map里面的键值对(add

5、ress:int),也就是我们在调用setPin之后如果再去调用onCreatePairedDeviceResult,则该方法一定返回false,并且出现下面的打印提示:cancelUserInputNative(B8:FF:FE:55:EF:D6)calledbutnonativedataavailable,ignoring.MaybethePasskeyAgentRequestwasalreadycancelledbytheremoteorbybluez.(因为该方法也会remove掉一个键值对)        3)cance

6、lPairingUserInput()取消用户输入密钥框,个人觉得一般情况下不要和setPin(setPasskey、setPairingConfirmation、setRemoteOutOfBandData)一起用,这几个方法都会remove掉map里面的key:value(也就是互斥的)。   3、蓝牙耳机、手柄等一些无法手动配置的设备是如何完成自动配对的。   在源码里面有一个自动配对的方法,也就是把pin值自动设为“0000”    1/*package*/ synchronizedbooleanattemptAutoPa

7、ir(Stringaddress){2        if (!mBondState.hasAutoPairingFailed(address)&&3                !mBondState.isAutoPairingBlacklisted(address)){4            mBondState.attempt(address);5            setPin(address,BluetoothDevice.convertPinToBytes("0000"));6            retur

8、n true;7        }8        return false;9    }该方法是在底层回调到java层的onRequestPinCode方法时被调用,首先 Checkifitsadock(正常输入的密钥,走正常配对方式,双方输入匹

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。