2011-10-31 3 views
0

Notre application doit coupler par programmation un périphérique Bluetooth avec un téléphone Android. Cela fonctionne bien sur tous les téléphones sur lesquels nous l'avons testé ... sauf le Nexus S.Appariement d'un périphérique Bluetooth avec Nexus S

Il fonctionnait sur ce téléphone jusqu'à ce que nous passions de l'appariement (code PIN) hérité, à l'appariement sécurisé simple plus récent. (SSP).

Voici le journal que je reçois quand la liaison échoue:

10-31 15:16:47.933: D/ShockboxBluetooth(9676): Created socket 
10-31 15:16:47.953: E/BluetoothEventLoop.cpp(110): event_filter: Received signal org.bluez.Adapter:DeviceCreated from /org/bluez/254/hci0 
10-31 15:16:47.953: E/BluetoothEventLoop.cpp(110): event_filter: Received signal org.bluez.Adapter:PropertyChanged from /org/bluez/254/hci0 
10-31 15:16:49.187: E/BluetoothEventLoop.cpp(110): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/254/hci0/dev_00_07_80_4D_B9_00 
10-31 15:16:49.566: E/BluetoothEventLoop.cpp(110): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/254/hci0/dev_00_07_80_4D_B9_00 
10-31 15:16:49.593: D/BluetoothService(110): updateDeviceServiceChannelCache(00:07:80:4D:B9:00) 
10-31 15:16:49.609: D/BluetoothService(110): uuid(application): 00001101-0000-1000-8000-00805f9b34fb 1 
10-31 15:16:49.609: D/BluetoothService(110): Making callback for 00001101-0000-1000-8000-00805f9b34fb with result 1 
10-31 15:16:49.617: I/BluetoothEventLoop.cpp(110): agent_event_filter: Received method org.bluez.Agent:OutOfBandAvailable 
10-31 15:16:54.156: E/BluetoothEventLoop.cpp(110): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/254/hci0/dev_00_07_80_4D_B9_00 
10-31 15:16:54.156: D/BluetoothService(110): 00:07:80:4D:B9:00 bond state 10 -> 12 (0) 
10-31 15:16:54.421: I/BluetoothEventLoop.cpp(110): agent_event_filter: Received method org.bluez.Agent:OutOfBandAvailable 
10-31 15:16:54.988: E/ShockboxBluetooth(9676): Could not connect to Device 
10-31 15:16:54.988: E/ShockboxBluetooth(9676): java.io.IOException: Connection refused 
10-31 15:16:54.988: E/ShockboxBluetooth(9676): at android.bluetooth.BluetoothSocket.connectNative(Native Method) 
10-31 15:16:54.988: E/ShockboxBluetooth(9676): at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:204) 
10-31 15:16:54.988: E/ShockboxBluetooth(9676): at com.Impakt.Shockbox.ShockboxBluetooth$ConnectThread.run(ShockboxBluetooth.java:416) 
10-31 15:16:54.992: D/ShockboxBluetooth(9676): Closed socket 

C'est beaucoup à lire donc je vais affinez (je pense). Je crois que cela a quelque chose à voir avec la ligne

10-31 15:16:49.617: I/BluetoothEventLoop.cpp(110): agent_event_filter: Received method org.bluez.Agent:OutOfBandAvailable 

Nous pensons le problème est avec la technologie NFC dans le Nexus S .... peut-être qu'il veut utiliser la technologie NFC pour apparier?

J'ai utilisé avec succès createInsecureRfcommSocket (en utilisant la réflexion) pour apparier ... mais je ne peux donc pas recevoir des données de l'appareil sur une socket créée avec listenUsingRfcommWithServiceRecord (évidemment), et nous ne voulons pas utiliser parce que listenUsingInsecureRfcommWithServiceRecord il nécessite le niveau API 10, et nous supprimerions un grand nombre de clients avec des téléphones 2.2/2.3.2.

Toute aide est appréciée. Merci!

Répondre

0

Je ne pourrais jamais obtenir ce travail. Il semble que certains téléphones Android refusent de coupler en utilisant SSP (Nexus S). Notre décision a été de revenir à l'utilisation de la méthode d'appariement "PIN" héritée qui fonctionne de manière fiable (si vous utilisez la méthode "createRfcommSocket" accessible via la réflexion).

Questions connexes