Android Bluetooth IOException: в соединении отказано

Примечание: также опубликовано на https://groups.google.com/forum/?fromgroups=#!topic/android-scripting/UsPy3x4jvG0

Я пытаюсь подключиться к устройству Bluetooth RFCOMM. Я использую sl4a и подключаюсь из скрипта Python. У меня есть два устройства Android с одной и той же версией Android 2.3.4.

На одном устройстве (Galaxy S2 с ядром, очень близким к стандартному, с рутом) скрипт работает нормально и подключается к устройству RFCOMM. На другом устройстве, экзотическом Winmate E430T (подозреваю, что это специализированный защищенный телефон Android с довольно низким уровнем громкости), я получаю java.io.IOException: Connection refused.

Я безуспешно пытался запустить пример кода bluetooth_chat.py, он предназначен для подключения Android к Android. Я получаю то же сообщение об ошибке, которое указывает, что проблема не в моем коде, а скорее в состоянии телефона Winmate (рутирован или нет, установленное ПО, конфигурация).

Кто-нибудь видел что-то подобное? Я видел сообщения о непарном восстановлении, я пробовал это дважды, но это не помогло. Я также попытался перезагрузить Winmate после установки Python и всех модулей.

Код:

import android
droid = android.Android()
address = '00:12:F3:11:DC:D5'
uuid = '00001101-0000-1000-8000-00805F9B34FB'
droid.toggleBluetoothState(True)
droid.bluetoothConnect(uuid, address)

Выдержка из логарифма:

V/sl4a.JsonRpcServer:117(27913): Sent: {"error":null,"id":6,"result":{"which":"negative"}}
V/sl4a.JsonRpcServer:74(27913): Received: {"params": [], "id": 7, "method": "bluetoothConnect"}
I/ActivityManager( 1304): Starting: Intent { flg=0x18000000 cmp=com.googlecode.android_scripting/.activity.FutureActivity (has extras) } from pid 27913
I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@407d4810
D/sl4a.ConsoleActivity:761(27913): onResume called
D/sl4a.ConsoleActivity:746(27913): onPause called
V/sl4a.FutureActivity:50(27913): FutureActivity created.
I/ActivityManager( 1304): Starting: Intent { cmp=com.googlecode.android_scripting/.activity.BluetoothDeviceList } from pid 27913
E/BluetoothEventLoop.cpp( 1304): event_filter: Received signal org.bluez.Adapter:PropertyChanged from /org/bluez/23550/hci0
V/BluetoothEventRedirector( 1862): Received android.bluetooth.adapter.action.DISCOVERY_STARTED
I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@407d4810
E/BluetoothEventLoop.cpp( 1304): event_filter: Received signal org.bluez.Adapter:DeviceFound from /org/bluez/23550/hci0
D/BluetoothService( 1304): updateDeviceServiceChannelCache(00:12:F3:11:DC:D5)
V/BluetoothEventRedirector( 1862): Received android.bluetooth.device.action.FOUND
E/BluetoothEventLoop.cpp( 1304): event_filter: Received signal org.bluez.Adapter:DeviceFound from /org/bluez/23550/hci0
D/BluetoothService( 1304): updateDeviceServiceChannelCache(0C:DF:A4:78:99:50)
I/ActivityManager( 1304): Displayed com.googlecode.android_scripting/.activity.BluetoothDeviceList: +449ms (total +519ms)
D/BluetoothService( 1304):  uuid(system): 00001105-0000-1000-8000-00805f9b34fb 3
V/BluetoothEventRedirector( 1862): Received android.bluetooth.device.action.FOUND
D/wpa_supplicant(19159): CMD: DRIVER RSSI-APPROX
D/wpa_supplicant(19159): wpa_driver_tista_driver_cmd RSSI-APPROX
D/wpa_supplicant(19159): rssi-approx command
D/wpa_supplicant(19159): CMD: DRIVER LINKSPEED
D/wpa_supplicant(19159): wpa_driver_tista_driver_cmd LINKSPEED
D/wpa_supplicant(19159): Link Speed command
D/wpa_supplicant(19159): buf LinkSpeed 54
E/BluetoothEventLoop.cpp( 1304): event_filter: Received signal org.bluez.Adapter:PropertyChanged from /org/bluez/23550/hci0
E/BluetoothService.cpp( 1304): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
V/BluetoothEventRedirector( 1862): Received android.bluetooth.adapter.action.DISCOVERY_FINISHED
D/sl4a.ConsoleActivity$1:145(27913): Connected to TerminalManager and found bridges.size=1
I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@407d4810
D/sl4a.ConsoleActivity:761(27913): onResume called
E/BluetoothEventLoop.cpp( 1304): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/23550/hci0/dev_0C_DF_A4_78_99_50
D/BluetoothService( 1304): updateDeviceServiceChannelCache(0C:DF:A4:78:99:50)
D/BluetoothService( 1304):  uuid(system): 00001105-0000-1000-8000-00805f9b34fb 3
D/BluetoothService( 1304):  uuid(application): 457807c0-4897-11df-9879-0800200c9a66 13
D/BluetoothService( 1304): Making callback for 457807c0-4897-11df-9879-0800200c9a66 with result 13
V/BluetoothEventRedirector( 1862): Received android.bleutooth.device.action.UUID
E/sl4a.JsonRpcServer:101(27913): Invocation error.
E/sl4a.JsonRpcServer:101(27913): java.io.IOException: Connection refused
E/sl4a.JsonRpcServer:101(27913):    at android.bluetooth.BluetoothSocket.connectNative(Native Method)
E/sl4a.JsonRpcServer:101(27913):    at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:204)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.facade.BluetoothFacade.bluetoothConnect(BluetoothFacade.java:158)
E/sl4a.JsonRpcServer:101(27913):    at java.lang.reflect.Method.invokeNative(Native Method)
E/sl4a.JsonRpcServer:101(27913):    at java.lang.reflect.Method.invoke(Method.java:507)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.jsonrpc.RpcReceiverManager.invoke(RpcReceiverManager.java:87)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.facade.FacadeManager.invoke(FacadeManager.java:58)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.rpc.MethodDescriptor.invoke(MethodDescriptor.java:109)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.jsonrpc.JsonRpcServer.handleConnection(JsonRpcServer.java:99)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.SimpleServer$ConnectionThread.run(SimpleServer.java:91)
V/sl4a.JsonRpcServer:117(27913): Sent: {"error":"java.io.IOException: Connection refused","id":7,"result":null}
V/sl4a.JsonRpcServer:74(27913): Received: {"params": [], "id": 8, "method": "bluetoothReadLine"}
E/sl4a.JsonRpcServer:101(27913): Invocation error.
E/sl4a.JsonRpcServer:101(27913): java.io.IOException: Bluetooth not ready for this connID.
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.facade.BluetoothFacade.getConnection(BluetoothFacade.java:95)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.facade.BluetoothFacade.bluetoothReadLine(BluetoothFacade.java:231)
E/sl4a.JsonRpcServer:101(27913):    at java.lang.reflect.Method.invokeNative(Native Method)
E/sl4a.JsonRpcServer:101(27913):    at java.lang.reflect.Method.invoke(Method.java:507)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.jsonrpc.RpcReceiverManager.invoke(RpcReceiverManager.java:87)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.facade.FacadeManager.invoke(FacadeManager.java:58)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.rpc.MethodDescriptor.invoke(MethodDescriptor.java:109)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.jsonrpc.JsonRpcServer.handleConnection(JsonRpcServer.java:99)
E/sl4a.JsonRpcServer:101(27913):    at com.googlecode.android_scripting.SimpleServer$ConnectionThread.run(SimpleServer.java:91)
V/sl4a.JsonRpcServer:117(27913): Sent: {"error":"java.io.IOException: Bluetooth not ready for this connID.","id":8,"result":null}
V/sl4a.JsonRpcServer:74(27913): Received: {"params": ["Chat Received", null], "id": 9, "method": "dialogCreateAlert"}
V/sl4a.JsonRpcServer:117(27913): Sent: {"error":null,"id":9,"result":null}
V/sl4a.JsonRpcServer:74(27913): Received: {"params": ["Ok"], "id": 10, "method": "dialogSetPositiveButtonText"}
V/sl4a.JsonRpcServer:117(27913): Sent: {"error":null,"id":10,"result":null}
V/sl4a.JsonRpcServer:74(27913): Received: {"params": [], "id": 11, "method": "dialogShow"}
I/ActivityManager( 1304): Starting: Intent { flg=0x18000000 cmp=com.googlecode.android_scripting/.activity.FutureActivity (has extras) } from pid 27913
D/sl4a.ConsoleActivity:746(27913): onPause called

Редактировать 09.13.2012 09:55: Попробовал Bluetooth Chat App (БИЛЛ РЭЙ) с маркета и он позволяет моим двум телефонам общаться, я могу подключиться с любой стороны: проблему можно решить хотя бы на Яве. Тем не менее пример bluetooth_chat.py не работает.

Редактировать 10:45: я пробовал из BeanShell все еще в SL4A с той же проблемой, работает на моем S2 и не работает на моем Winmate:

код:

source("/sdcard/com.googlecode.bshforandroid/extras/bsh/android.bsh");
droid = Android();
droid.call("makeToast", "Hello, Android!");
address = "00:12:F3:11:DC:E5";
uuid = "00001101-0000-1000-8000-00805F9B34FB";
droid.call("toggleBluetoothState","True");
droid.call("bluetoothConnect",uuid, address);
droid.call("makeToast", "Bye, Android!");

logcat похож:

I/ActivityManager( 1305): Starting: Intent { act=android.bluetooth.adapter.action.REQUEST_ENABLE cmp=com.android.settings/.bluetooth.RequestPermissionActivity } from pid 7364
D/dalvikvm( 7364): GC_CONCURRENT freed 1075K, 49% free 3716K/7239K, external 4198K/5242K, paused 2ms+14ms
V/sl4a.JsonRpcServer:117( 7364): Sent: {"error":null,"id":0,"result":true}
I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@4078a040
V/sl4a.JsonRpcServer:74( 7364): Received: {"id":0,"method":"bluetoothConnect","params":["00001101-0000-1000-8000-00805F9B34FB","00:12:F3:11:DC:E5"]}
E/BluetoothService.cpp( 1305): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
I/ActivityManager( 1305): Displayed com.googlecode.android_scripting/.activity.FutureActivity: +223ms
I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@4078a040
D/sl4a.ConsoleActivity:761( 7364): onResume called
E/BluetoothEventLoop.cpp( 1305): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/1804/hci0/dev_00_12_F3_11_DC_E5
I/ActivityManager( 1305): Start proc com.google.android.carhome for broadcast com.google.android.carhome/.receiver.BluetoothLaunchReceiver: pid=7876 uid=10020 gids={3002, 3001}
I/HK/LatinKeyboardBaseView( 1385): closing org.pocketworkstation.pckeyboard.LatinKeyboardView@4078a040
I/ActivityThread( 7876): Pub com.google.android.carhome.config: com.google.android.carhome.CarHomeProvider
D/BluetoothService( 1305): updateDeviceServiceChannelCache(00:12:F3:11:DC:E5)
D/BluetoothService( 1305):  uuid(application): 00001101-0000-1000-8000-00805f9b34fb 1
D/BluetoothService( 1305): Making callback for 00001101-0000-1000-8000-00805f9b34fb with result 1
D/dalvikvm( 7364): GC_EXTERNAL_ALLOC freed 50K, 49% free 3698K/7239K, external 4198K/5242K, paused 131ms
V/BluetoothEventRedirector( 7681): Received android.bleutooth.device.action.UUID
I/BluetoothEventLoop.cpp( 1305): agent_event_filter: Received method org.bluez.Agent:OutOfBandAvailable
I/sl4a.TerminalBridge:540( 7364): parentChanged() now width=133, height=34
E/sl4a.JsonRpcServer:101( 7364): Invocation error.
E/sl4a.JsonRpcServer:101( 7364): java.io.IOException: Connection refused
E/sl4a.JsonRpcServer:101( 7364):    at android.bluetooth.BluetoothSocket.connectNative(Native Method)
E/sl4a.JsonRpcServer:101( 7364):    at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:204)
E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.facade.BluetoothFacade.bluetoothConnect(BluetoothFacade.java:158)
E/sl4a.JsonRpcServer:101( 7364):    at java.lang.reflect.Method.invokeNative(Native Method)
E/sl4a.JsonRpcServer:101( 7364):    at java.lang.reflect.Method.invoke(Method.java:507)
E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.jsonrpc.RpcReceiverManager.invoke(RpcReceiverManager.java:87)
E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.facade.FacadeManager.invoke(FacadeManager.java:58)
E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.rpc.MethodDescriptor.invoke(MethodDescriptor.java:109)
E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.jsonrpc.JsonRpcServer.handleConnection(JsonRpcServer.java:99)
E/sl4a.JsonRpcServer:101( 7364):    at com.googlecode.android_scripting.SimpleServer$ConnectionThread.run(SimpleServer.java:91)
V/sl4a.JsonRpcServer:117( 7364): Sent: {"error":"java.io.IOException: Connection refused","id":0,"result":null}

person Cyril Holweck    schedule 12.09.2012    source источник
comment
Не работает ли случайно неисправный WinMate под управлением Android ICS? 4.0.x я думаю.   -  person Radu    schedule 30.10.2012
comment
@Cyrill Holweck Есть новости?   -  person Radu    schedule 14.11.2012


Ответы (1)


В проекте Python4Android есть копия PyBluez, скомпилированная для ARM, которая может быть полезна. здесь.

Это не чистый Python, но установить его несложно; вы просто загружаете копию файла яйца на свой дроид, открываете приложение Python4Android, нажимаете «Импортировать модули» и выбираете файл яйца.

Я использовал этот материал раньше без проблем.

person Carl Smith    schedule 07.02.2013