1 你对蓝牙部分了解很充足;
2 稍微有一点偏差,对于蓝牙技术的特性,蓝牙匹配码是一对一,虽然有0000和1234一样的码,但是并不是广播;
3 我做了蓝牙串口数据采集的模块,所以有一点点见解:
a 很多设备是默认写入了匹配码例如蓝牙耳机,0000或者1234,这时当Android连接该设备的时候已经接收到了设备发来的0000或者1234匹配码,这时再次输入验证匹配即可配对成功;
b 还有一部分设备是没有写入匹配码的,例如蓝牙键盘(部分产品),这是当Android连接该设备的时候会提示你让你在蓝牙键盘输入一个匹配码和Android已经生成的匹配码做匹配验证;
c 当然你也会想到,会有另外一部分设备是需要双方都输入匹配的,具体设备我就不举例说明了~
d 还有一些特殊化的设备匹配,就是不是默认0000或者1234,也不是手动输入,而是自动匹配哦,高版本的蓝牙硬件支持,不过我还没有接触过,应该是利用发射和接收功率判断的,例如很多支持快速匹配的蓝牙耳机,在手机附近即可,无需配对~

解决方案 »

  1.   

    现在做SPP协议相关的处理,因为要用到自动设置pin值,所以很苦恼。
    有些手机可以通过自动调出蓝牙PIN码输入框来解决,有些却不行,是不是因为每个厂商都有自己的Bluz编译后产品?
    BluetoothDevice内有隐藏的setPin方法和setPasskey方法,可惜要是调用的话,没有任何效果,只会弹出输入用的对话框。
    关于进程间通讯的方法,本来想通过生成新的BroadcastReceive来接收ACTION_PAIR_REQUEST,结果没有捕获那个broadcast。
    Ibinder又不知道该怎么处理..
      

  2.   


    关于第二点,我说的广播是android系统里的通过sendBroadcast()方法发送的系统内部广播,是android的东西,和你说的传输层的广播不是一回事
    之所以想要自动匹配,是为了方便用户第一次使用的时候不用手工匹配了;另外,同事用C#写的winform程序可以实现把匹配码写死在程序里而不用客户输入,于是我也想在android上实现同样的功能。
      

  3.   

    BluetoothDevice的那两个方法是私有还是protected的吗?文档上没列出来~~
      

  4.   

    http://immortal.5d6d.com/thread-566-1-1.html已解决 请参考
      

  5.   

    问一下,怎么实现android里面的蓝牙设备的自动配对,能不能给发一个示例代码,谢谢啊