2011-09-13 14 views
5

Tenemos una aplicación de Android interna que es una migración de una aplicación JME preexistente. Hubo un problema por el que los usuarios en el campo se quejaban de que la aplicación agotaba la batería del dispositivo cuando intentaba enviar datos cuando la intensidad de la señal era baja (esto es un comportamiento común en dispositivos móviles y no nuestro problema inmediato)¿Cómo se determina la intensidad de la señal cuando GSM devuelve '99'?

Los datos debe enviarse de inmediato, pero no de inmediato, por lo que hemos verificado la potencia de la señal antes de enviar los datos. Esta comprobación usó la devolución de llamada PhoneStateListener y onSignalStrengthsChanged(SignalStrength signalStrength) como lo recomiendan muchas preguntas y artículos similares de SO en otros lugares.

Esto funciona bien en mi propio teléfono (ejecutándose en Telstra Australia) y SignalStrength .getGsmSignalStrength() devuelve un valor de 0-31 como se esperaba. Sin embargo, en un teléfono que se ejecuta en otra red (Optus Australia), informa que GSM es verdadero pero devuelve 99 (es decir, un código de error) al determinar la intensidad de la señal. Creo que este sigue siendo el comportamiento correcto ya que GSM son los datos 2G y es el 3G UMTS/HSPA que se debe comprobar. UMTS/HSPA es la red informada por la aplicación Elixir en el teléfono, como se esperaba. También hemos recibido informes no confirmados de que mi red (Telstra Australia) informa de que la fuerza GSM es insuficiente para enviar datos desde la aplicación, pero puede navegar por Internet y realizar otras actividades de datos sin problemas. Esto me lleva a creer que la fuerza GSM es algo incorrecto de verificar de todos modos.

Estoy en el proceso de ejecutar pruebas en otros teléfonos Android en la misma red (todavía estoy tratando de acceder a algunos dispositivos) pero es definitivamente el caso de que podemos navegar por Internet y enviar (HTTP) datos de nuestra aplicación, simplemente falla si comprobamos la intensidad de la señal y siempre recibimos '99'. En Optus, SignalStrength.toString() siempre devuelve 99 -1 -1 -1 -1 -1 -1 gsm 3 después de varios días de prueba contra múltiples torres.

El más cercano (sin respuesta) SO hilo es éste: Getting Signal Strength RSCP and Ec/Io from a phone served by a HSPA network

En resumen:

  • conexión Telstra informa GSM es verdadero y devuelve una intensidad de señal utilizable
  • Optus informes de conexión GSM verdadero, pero siempre informes '99'
  • GSM es posiblemente lo incorrecto de comprobar de todos modos, tenemos que tratar de obtener el 'actual dat una resistencia a la red de transmisión '

Respuesta

3

después de probar con varios terminales inalámbricos de múltiples proveedores y múltiples portadoras (australianos), parece que este comportamiento es específico para el Samsung Galaxy S2 y no fue visto en la versión anterior (Galaxy S)

+0

Estoy teniendo el mismo problema aquí, si tiene alguna solución o solución alternativa, por favor comparta conmigo. – NyanLH

+0

desafortunadamente, la única solución que encontramos fue tener una configuración de 'enviar siempre' en la aplicación que siempre envía los datos independientemente de la intensidad de GSM. –

+0

También estoy experimentando este problema en el Samsung Galaxy Tab 7.7. ¿Qué versión de Android usabas cuando esto era un problema? ¿Desapareció el problema por casualidad cuando se actualizó a Android 4.x? (La pestaña Galaxy se ejecuta en Android 3.x) – Diederik

Cuestiones relacionadas