在android中配对蓝牙设备的正确顺序是什么?

时间:2012-10-24 21:03:52

标签: android bluetooth

我正致力于通过应用程序将客户端蓝牙设备与我的手机配对。现在我在asynctask中使用以下代码来尝试为远程设备创建一个套接字。

try{
    ba.cancelDiscovery();
    socket= blud.createRfcommSocketToServiceRecord(uuid);
    Method m = blud.getClass().getMethod("createRfcommSocket", new                  
    Class[] {int.class});
    socket = (BluetoothSocket) m.invoke(blud, 1);
}catch(Exception e){e.printStackTrace();}

我不知道我是否需要更多地遵循BluetoothChat示例,其中我有一个Connect Thread和一个Accept Thread,或者asynctasks就足够了。

这是我正在使用的UUID字符串00001101-0000-1000-8000-00805F9B34FB 我正在操作的顺序是我在服务器端监听,一旦我试图打开蓝牙设备的套接字我尝试连接但最终获得权限拒绝IO异常

2 个答案:

答案 0 :(得分:0)

您需要在清单中申请蓝牙权限和BLUETOOTH_ADMIN权限 正如Android API here

所述

“注意:大多数方法都需要BLUETOOTH权限,有些方法还需要BLUETOOTH_ADMIN权限。”

答案 1 :(得分:0)

对于蓝牙权限,请在android清单文件中添加以下内容 -

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />

要创建债券,请使用此 -

public boolean createBond(BluetoothDevice btDevice)  
    throws Exception  
    { 
        Class class1 = Class.forName("android.bluetooth.BluetoothDevice");
        Method createBondMethod = class1.getMethod("createBond");  
        Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice);  
        return returnValue.booleanValue();  
    } 

创建套接字 -

private BluetoothSocket createBluetoothSocket(BluetoothDevice device) throws IOException {
        if(Build.VERSION.SDK_INT >= 10){
            try {
                final Method  m = device.getClass().getMethod("createInsecureRfcommSocketToServiceRecord", new Class[] { UUID.class });
                return (BluetoothSocket) m.invoke(device, my_UUID);
            } catch (Exception e) {
                Log.e("No Connection Created", "Could not create Insecure RFComm Connection",e);
            }
        }
        return  device.createRfcommSocketToServiceRecord(my_UUID);
    }

同时从android开发者文档中检查Bluetooth Adapter