Python中不安全的rfcomm连接

时间:2016-07-20 09:49:04

标签: python bluetooth raspberry-pi rfcomm

我想在没有配对的情况下建立从Android设备到Raspberry Pi的蓝牙连接。 RPi中使用的语言是Python。我正在使用来自android的createInsecureRfcommSocketToServiceRecord进行连接。

但是,只有在两个设备配对时才建立连接。 Python中是否有等效的listenUsingInsecureRfcommWithServiceRecord

Raspberry Pi代码

server_sock=BluetoothSocket( RFCOMM )
server_sock.bind(("",PORT_ANY))
server_sock.listen(1)
port = server_sock.getsockname()[1]

uuid = "f3c74f47-1d38-49ed-8bbc-0369b3eb277c"

advertise_service( server_sock, "AquaPiServer",
                   service_id = uuid,
                   service_classes = [ uuid, SERIAL_PORT_CLASS ],
                   profiles = [ SERIAL_PORT_PROFILE ], 
                   )

    client_sock, client_info = server_sock.accept()
    print "Accepted connection from ", client_info

Android代码

BluetoothDevice device = blueAdapter.getRemoteDevice(RPi_MAC);
BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(UUID.fromString("f3c74f47-1d38-49ed-8bbc-0369b3eb277c"));
blueAdapter.cancelDiscovery();
socket.connect();

1 个答案:

答案 0 :(得分:0)

我能够在没有配对的情况下连接到Raspberry Pi。为此,我必须使RPi可被发现。然后我使用了来自我在Marshmallow上运行的Nexus的socket.connect()。通过这样做,我能够在RPi中获取我的Nexus的MAC地址。唯一的问题是我每次连接时都会收到配对请求,但MAC地址是我想要的。

感谢大卫的投入!