Autore Topic: Ritorno null da listenUsingRfcommWithServiceRecord  (Letto 1877 volte)

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Ritorno null da listenUsingRfcommWithServiceRecord
« il: 14 Novembre 2011, 16:27:51 CET »
0
Sto facendo un applicazione che lavora con bluetooth. Ho scritto un piccolo server usando un thread, nel quale viene creato un BlueToothSocketServer. Questo viene fatto chiamando listenUsingRfcommWithServiceRecord(...) sul BlueToothAdapter. Spesso però questo mi lancia un eccezione, e non capisco il motivo:

Codice (Java): [Seleziona]
public void initialize() {
                connections = new Vector<Connection>();
                BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
                BluetoothServerSocket tmp = null;
                try {
                        tmp = adapter.listenUsingRfcommWithServiceRecord(BTServer.BTCHAT,
                                        BTServer.MYUUID);
                } catch (IOException e) {
                        Log.e("BTServer", "listenUsingRfcommWithServiceRecord fail!");          }
                serverSocket = tmp;
                Log.e("BTServer", "It's created");
        }

come detto mi lancia un eccezione:

#### ERROR : __listen_prot_rfcomm: failed with reason 1####

Qualcuno mi sa dire il perchè e come posso risolvere?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #1 il: 14 Novembre 2011, 16:45:57 CET »
0
Le righe di errore nel LogCat cosa dicono?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #2 il: 14 Novembre 2011, 20:26:32 CET »
0
#### ERROR : __listen_prot_rfcomm: failed with reason 1####  è la linea del LogCat

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #3 il: 14 Novembre 2011, 20:31:29 CET »
0
#### ERROR : __listen_prot_rfcomm: failed with reason 1####  è la linea del LogCat

Stranissimo formato, mai vista una cosa del genere. Tutte le righe del mio LogCat sono in questo formato:

Codice: [Seleziona]
11-09 14:12:59.640: E/AndroidRuntime(31433): java.lang.RuntimeException: ...
Sicuro che sia il pannello del LogCat? A me sembra quello della console errori.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #4 il: 15 Novembre 2011, 00:08:01 CET »
0


Secondo me l'eccezzione viene gestita (all'intenrno della libreria android) e viene semplicemente fatto un Log.e()

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #5 il: 15 Novembre 2011, 08:03:39 CET »
0
Da quel poco che posso vedere mi viene in mente una sola idea: adapter è valido quando vai ad usarlo nel blocco try-catch? Prova a loggarne il valore.

E una raccomandazione generale: solitamente Log.e è per loggare gli errori e non gli eventi, anche per migliorare leggibilità sarebbe meglio usare Log.e solo per evidenziare errori. Ovviamente non cambia lo stato di questo problema.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #6 il: 15 Novembre 2011, 11:12:05 CET »
0
Da quel poco che posso vedere mi viene in mente una sola idea: adapter è valido quando vai ad usarlo nel blocco try-catch? Prova a loggarne il valore.

E una raccomandazione generale: solitamente Log.e è per loggare gli errori e non gli eventi, anche per migliorare leggibilità sarebbe meglio usare Log.e solo per evidenziare errori. Ovviamente non cambia lo stato di questo problema.

Per il Log.e()... ok, prenderò in considerazione.
Per il discorso dell'adapter, la riga sopra ho messo un Log.e(adapter == null), per controllare e come si vede, non è null, perciò l'oggetto è OK. Potrebbe essere che non sia "disponibile" (occupato), appena riesco faccio un getState() e vediamo cosa mi torna.

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #7 il: 15 Novembre 2011, 22:30:22 CET »
0
Ecco qui il Log completo dell'eccezione



Lo stato dell'adapter è 12, cioè STATE_ON. Facendo delle prove, l'adapter è sempre su ON, perciò l'errore penso sia dovuto ad altro.
Il metodo in questione è all'interno di una Service la quale viene avviata assieme all'appplicazione. Ho notato che l'eccezione viene lanciata sempre, a parte la prima esecuzione dell'applicazione.
« Ultima modifica: 15 Novembre 2011, 22:50:30 CET da emaborsa »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #8 il: 16 Novembre 2011, 00:05:38 CET »
0
il server lo chiudi o lo lasci aperto e poi rientri nell'app?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #9 il: 16 Novembre 2011, 08:44:21 CET »
0
nel onDestroy() viene chiuso tutto.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #10 il: 16 Novembre 2011, 12:02:28 CET »
0
nel onDestroy() viene chiuso tutto.
mettila nella onStop()
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #11 il: 16 Novembre 2011, 15:30:25 CET »
0
Prima di metterlo nello onStop(), ho fatto in modo che il Service parte con il onCreate() della activity principale e che si chiuda con il onDestroy() della stessa activity. Ora sembra funzionare, non mi lancia più l'eccezione.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #12 il: 16 Novembre 2011, 16:57:03 CET »
0
Prima di metterlo nello onStop(), ho fatto in modo che il Service parte con il onCreate() della activity principale e che si chiuda con il onDestroy() della stessa activity. Ora sembra funzionare, non mi lancia più l'eccezione.
perchè prima dov'era?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #13 il: 16 Novembre 2011, 18:31:59 CET »
0
Era sempre li, ma avevo fatto 2 bottoni per testare l'avvio e la fermata del service, manualmente. Dato che il servizio andrà SEMPRE e l'utente non può interagirci, ho provato a togliere i bottoni...e sembra OK.

Offline doctorX

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Sistema operativo:
    Ubuntu 10.04
Re:Ritorno null da listenUsingRfcommWithServiceRecord
« Risposta #14 il: 29 Dicembre 2011, 15:10:58 CET »
0





Ciao ragazzi.. posto qui perchè mi pare di avere un problema molto simile..
Le condizioni sono le stesse di emaborsa, ma l'errore che ricevo è leggermente differente..

Premetto che non si verifica ogni volta, ma lo fa abbastanza spesso..
e ho notato che ogni volta che lo fa è quando lancio l'applicazione a bluetooth spento..
L'eccezione si verifica appena dopo la comparsa della schermata che propone all'utente di accendere il bluetooth..

Ecco il logcat:

12-29 14:38:04.185: ERROR/ConnectionService(581): Socket listening failed
12-29 14:38:04.185: ERROR/ConnectionService(581): java.io.IOException: Unknown error: 0
12-29 14:38:04.185: ERROR/ConnectionService(581):     at android.bluetooth.BluetoothSocket.initSocketNative(Native Method)
12-29 14:38:04.185: ERROR/ConnectionService(581):     at android.bluetooth.BluetoothSocket.<init>(BluetoothSocket.java:151)
12-29 14:38:04.185: ERROR/ConnectionService(581):     at android.bluetooth.BluetoothServerSocket.<init>(BluetoothServerSocket.java:77)
12-29 14:38:04.185: ERROR/ConnectionService(581):     at android.bluetooth.BluetoothAdapter.createNewRfcommSocketAndRecord(BluetoothAdapter.java:1017)
12-29 14:38:04.185: ERROR/ConnectionService(581):     at android.bluetooth.BluetoothAdapter.listenUsingRfcommWithServiceRecord(BluetoothAdapter.java:969)
12-29 14:38:04.185: ERROR/ConnectionService(581):     at blueroute.service.ConnectionService$AcceptThread.<init>(ConnectionService.java:744)
12-29 14:38:04.185: ERROR/ConnectionService(581):     at blueroute.service.ConnectionService$1.avvia(ConnectionService.java:103)
12-29 14:38:04.185: ERROR/ConnectionService(581):     at blueroute.ui.Run$1.backgroundProcess(Run.java:577)
12-29 14:38:04.185: ERROR/ConnectionService(581):     at blueroute.ui.Run$1.run(Run.java:546)
12-29 14:38:04.185: ERROR/ConnectionService(581):     at java.lang.Thread.run(Thread.java:1019)