2016-07-20 11 views
0

Я хотел бы установить соединение Bluetooth с устройства Android с малиной Pi без спаривания. Язык, используемый в RPi, - это Python. Я использую createInsecureRfcommSocketToServiceRecord с Android.Небезопасное соединение rfcomm в Python

Однако соединение устанавливается только при соединении двух устройств. Есть ли эквивалент listenUsingInsecureRfcommWithServiceRecord в Python?

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(); 
+0

Я не считаю, что это невозможно обойтись без сопряжения. Процесс сопряжения Bluetooth - это то, что разрешает двум устройствам общаться. – davidgyoung

+0

Мне любопытно, почему это невозможно, так как небезопасный rfcomm отлично работает в Android. Это ограничение Малины Пи? – deadpool

ответ

0

я смог подключиться к Raspberry Pi без спаривания. Для этого мне пришлось сделать RPi доступным. Затем я использовал socket.connect() от моего Nexus, работающего на Marshmallow. Сделав это, я смог получить MAC-адрес моего Nexus в RPi. Единственная проблема заключается в том, что я получаю запрос на сопряжение при каждом подключении, но MAC-адрес был тем, что я хотел.

Спасибо за ваши данные Дэвид!

 Смежные вопросы

  • Нет связанных вопросов^_^