2 mark dev Mark_dev 于 2012.12.06 11:39 提问

主动请求蓝牙配对(Android)

我现在已经得到了附近蓝牙设备BluetoothDevice,怎么主动发送配对请求,在网上找了许多答案,但是好像都是一些聊天方面的内容要用到BluetoothServerSocket和BluetoothSocket方面的,难道我请问配对也要用到这些,能顺便原理或者思路吗?谢谢!

4个回答

cytown
cytown   2012.12.06 12:01

createInsecureRfcommSocketToServiceRecord or createRfcommSocketToServiceRecord, then BluetoothSocket.connect()

cytown
cytown 10以下用另外一个。
接近 5 年之前 回复
Mark_dev
Mark_dev createInsecureRfcommSocketToServiceRecord 是不是对版本有要求,好像没有这个方法。
接近 5 年之前 回复
Sueyexin
Sueyexin   2012.12.15 14:31

可以直接通过 device.connect() 来尝试让系统自动去配对

可以尝试一下隐藏的 api 哦,亲

static public boolean createBond(Class btClass,BluetoothDevice btDevice) throws Exception {  
    Method createBondMethod = btClass.getMethod("createBond");  
    Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice);  
    return returnValue.booleanValue();  
} 

用上面的方法来请求配对,更多信息,详见:
http://blog.csdn.net/hellogv/article/details/6042091

yiranwujixian
yiranwujixian   2012.12.17 09:44

你已经找到了附近的蓝牙,那你选一个蓝牙,然后取得他的地址

BluetoothDevice device = m_BluetoothAdapter.getRemoteDevice(address);
m_ChatService.connect(device);

至于m_ChatService,是BluetoothChat这个代码(网上找)里的BluetoothChatService对象,我就是从这聊天代码里修改后拿来用

xiaoxiaoaishang
xiaoxiaoaishang   2012.12.17 11:23
// 自动配对设置Pin值
static public boolean autoBond(Class btClass, BluetoothDevice device, String strPin)
        throws Exception {
    Method autoBondMethod = btClass.getMethod("setPin", new Class[] { byte[].class });
    Boolean result = (Boolean) autoBondMethod
            .invoke(device, new Object[] { strPin.getBytes() });
    return result;
}

// 开始配对
static public boolean createBond(Class btClass, BluetoothDevice device) throws Exception {
    Method createBondMethod = btClass.getMethod("createBond");
    Boolean returnValue = (Boolean) createBondMethod.invoke(device);
    return returnValue.booleanValue();
}

更详细的你可以看下蓝牙自动配对

Csdn user default icon
上传中...
上传图片
插入图片