2011-09-13 19 views
5

Abbiamo un'app Android interna che è una migrazione di un'applicazione JME preesistente. C'è stato un problema in cui gli utenti del campo si lamentavano che l'app scaricava la batteria del dispositivo quando cercava di inviare dati quando la potenza del segnale era bassa (questo è comportamento comune nei dispositivi mobili e non il nostro problema immediato)Come determinare la potenza del segnale quando GSM restituisce "99"?

I dati deve essere inviato tempestivamente ma non immediatamente, quindi abbiamo effettuato un controllo sulla potenza del segnale prima di inviare i dati. Questo controllo utilizzava il PhoneStateListener e il callback onSignalStrengthsChanged(SignalStrength signalStrength) come raccomandato da molte domande e articoli SO simili.

Questo funziona correttamente sul mio telefono (in esecuzione su Telstra Australia) e SignalStrength .getGsmSignalStrength() restituisce un valore da 0-31 come previsto. Su un telefono in esecuzione su un'altra rete (Optus Australia), tuttavia, segnala che GSM è vero ma restituisce 99 (cioè un codice di errore) quando si determina la potenza del segnale. Credo che questo sia ancora un comportamento corretto dal momento che GSM sono i dati 2G ed è il 3G UMTS/HSPA che deve essere controllato. UMTS/HSPA è la rete riportata dall'app Elixir sul telefono, come previsto. Abbiamo anche avuto rapporti non confermati che la mia rete (Telstra Australia) segnala insufficiente intensità GSM per inviare dati dall'applicazione, ma è in grado di navigare su Internet ed eseguire altre attività di dati senza problemi. Questo mi porta a credere che la forza GSM sia la cosa sbagliata da controllare comunque.

Sono in procinto di eseguire test su altri telefoni Android sulla stessa rete (ancora cercando di accedere ad alcuni dispositivi) ma è sicuramente il caso che siamo in grado di navigare in internet e inviare (HTTP) i dati dal nostro applicazione, fallisce solo se controlliamo la potenza del segnale e riceviamo sempre "99". Su Optus, SignalStrength.toString() restituisce sempre 99 -1 -1 -1 -1 -1 -1 gsm 3 dopo diversi giorni di test su più torri.

Il più vicino (senza risposta) SO discussione è questa: Getting Signal Strength RSCP and Ec/Io from a phone served by a HSPA network

In sintesi:

  • connessione Telstra riporta GSM è vero e restituisce una potenza del segnale utilizzabile
  • Optus rapporti di connessione GSM vero ma riporta sempre '99'
  • GSM è probabilmente la cosa sbagliata da verificare in ogni caso, dobbiamo cercare di ottenere il dat 'un punto di forza della rete di trasmissione '

risposta

3

dopo il test con più portatili di fornitori diversi e molteplici vettori (australiani), sembra che questo comportamento è specifico per il Samsung Galaxy S2 e non è stato visto sulla versione precedente (Galaxy S).

+0

Sto riscontrando lo stesso problema qui, se hai qualche soluzione o lavori, per favore condividi con me. – NyanLH

+0

sfortunatamente l'unica soluzione che abbiamo trovato era quella di avere un'impostazione "invia sempre" sull'applicazione che invia sempre i dati indipendentemente dalla potenza del GSM. –

+0

Sto riscontrando questo problema anche sul Samsung Galaxy Tab 7.7. Quale versione di Android stai usando quando questo era un problema? Il problema è scomparso quando hai aggiornato a Android 4.x? (La scheda galassia gira su Android 3.x) – Diederik

Problemi correlati