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!