Autore Topic: Problema connect BluetoothSocket device-pc  (Letto 678 volte)

Offline tz

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy SII
  • Sistema operativo:
    Windows 7
Problema connect BluetoothSocket device-pc
« il: 13 Aprile 2012, 13:54:51 CEST »
0
Salve ragazzi

mi scuso se ho in qualche modo violato le regole del forum, ma ho un problema (secondo me stupido) che però anche dopo varie ricerche in rete e sul forum continua a tormentarmi.

Quello che devo fare è connettere un dispositivo android 2.3.4 via bluetooth ad un portatile che comunica tramite chiavetta BT USB.

In particolare, non riesco a ricavarmi un BluetoothSocket adatto per iniziare la comunicazione. Una volta trovato il dispositivo (BluetoothDevice) con il quale voglio comunicare, mi si presenta l'errore di "Connection Refused" all'istruzione indicata:

Codice (Java): [Seleziona]
public void run() {    
                if(myAdapter.isDiscovering())    
                        myAdapter.cancelDiscovery();        
                try {            
                        // Connect the device through the socket. This will block until it succeeds or throws an exception            
                        mySocket.connect();         <----------------------------  
                } catch (IOException ex) {          
                        // Unable to connect; close the socket and get out            
                        try {                
                                mySocket.close();            
                        } catch (IOException closeException) { }              
                }          
        }  
 

Log:

Codice: [Seleziona]
04-13 13:48:36.124: W/System.err(28544): java.io.IOException: Connection refused
04-13 13:48:36.124: W/System.err(28544):         at android.bluetooth.BluetoothSocket.connectNative(Native Method)
04-13 13:48:36.124: W/System.err(28544):         at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:220)
04-13 13:48:36.124: W/System.err(28544):         at tommy.android.bluetooth.ConnectClientThread.run(ConnectClientThread.java:40)
04-13 13:48:36.124: W/System.err(28544):         at tommy.android.bluetooth.BluetoothActivity.connectToDeviceHandler(BluetoothActivity.java:166)
04-13 13:48:36.129: W/System.err(28544):         at java.lang.reflect.Method.invokeNative(Native Method)
04-13 13:48:36.129: W/System.err(28544):         at java.lang.reflect.Method.invoke(Method.java:507)
04-13 13:48:36.134: W/System.err(28544):         at android.view.View$1.onClick(View.java:2149)
04-13 13:48:36.134: W/System.err(28544):         at android.view.View.performClick(View.java:2538)
04-13 13:48:36.134: W/System.err(28544):         at android.view.View$PerformClick.run(View.java:9152)
04-13 13:48:36.134: W/System.err(28544):         at android.os.Handler.handleCallback(Handler.java:587)
04-13 13:48:36.134: W/System.err(28544):         at android.os.Handler.dispatchMessage(Handler.java:92)
04-13 13:48:36.134: W/System.err(28544):         at android.os.Looper.loop(Looper.java:130)
04-13 13:48:36.134: W/System.err(28544):         at android.app.ActivityThread.main(ActivityThread.java:3691)
04-13 13:48:36.134: W/System.err(28544):         at java.lang.reflect.Method.invokeNative(Native Method)
04-13 13:48:36.134: W/System.err(28544):         at java.lang.reflect.Method.invoke(Method.java:507)
04-13 13:48:36.134: W/System.err(28544):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
04-13 13:48:36.134: W/System.err(28544):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
04-13 13:48:36.134: W/System.err(28544):         at dalvik.system.NativeStart.main(Native Method)
04-13 13:48:36.134: D/BLZ20_ASOCKWRP(28544): asocket_abort [47,48,49]

Il socket era stato istanziato con :

Codice (Java): [Seleziona]
Method m = myDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
                mySocket = (BluetoothSocket) m.invoke(myDevice, 1);

Sul PC ovviamente non mi arriva nessuna richiesta del tipo "accetta comunicazione". Ho già fatto il pair dei dispositivi, ma non è servito a niente.

Mi sono quindi messo a provare la BluetoothChat come voi suggerite in molti topic, ma quando tento la connessione anche quella mi dà "Unable to connect device", con il seguente log:

Codice: [Seleziona]
04-13 13:32:28.240: E/BluetoothChatService(26938): Socket Type: Secureaccept() failed
04-13 13:32:28.240: E/BluetoothChatService(26938): java.io.IOException: socket closed
04-13 13:32:28.240: E/BluetoothChatService(26938):         at android.bluetooth.BluetoothSocket.accept(BluetoothSocket.java:315)
04-13 13:32:28.240: E/BluetoothChatService(26938):         at android.bluetooth.BluetoothServerSocket.accept(BluetoothServerSocket.java:105)
04-13 13:32:28.240: E/BluetoothChatService(26938):         at android.bluetooth.BluetoothServerSocket.accept(BluetoothServerSocket.java:91)
04-13 13:32:28.240: E/BluetoothChatService(26938):         at com.example.android.BluetoothChat.BluetoothChatService$AcceptThread.run(BluetoothChatService.java:301)

Ho visto che negli altri casi consigliate di controllare la versione della chat, che sia conforme a quella del dispositivo. La chat è presa dalle API 10 (Android 2.3.3), quindi quella più vicina al 2.3.4 (API 11 è Android 3.0), ma sembra avere comunque qualche problema.

Quindi vi chiedo: è un problema di programmazione o è proprio un problema di dispositivo BT USB o simili?

Grazie per l'aiuto