Как определить уровень сигнала, когда GSM возвращает «99»? - PullRequest
4 голосов
/ 13 сентября 2011

У нас есть собственное Android-приложение, которое представляет собой миграцию уже существующего JME-приложения. Возникла проблема, когда пользователи на местах жаловались на то, что приложение разряжало батарею устройства, когда оно пыталось отправить данные при низком уровне сигнала (это обычное поведение на мобильных устройствах, а не наша непосредственная проблема)

Данные необходимо отправлять быстро, но не сразу, поэтому перед отправкой данных мы проверили уровень сигнала. В этой проверке использовались обратные вызовы PhoneStateListener и onSignalStrengthsChanged(SignalStrength signalStrength), как рекомендовано многими аналогичными вопросами и статьями SO в других местах.

Это прекрасно работает на моем телефоне (работает на Telstra Australia), а SignalStrength .getGsmSignalStrength () возвращает значение от 0-31, как и ожидалось. Однако на телефоне, работающем в другой сети (Optus Australia), он сообщает, что GSM имеет значение true, но возвращает 99 (т. Е. Код ошибки) при определении уровня сигнала. Я считаю, что это по-прежнему правильное поведение, поскольку GSM - это данные 2G, и именно 3G UMTS / HSPA следует проверить. UMTS / HSPA - это сеть, о которой сообщает приложение Elixir на телефоне, как и ожидалось. У нас также есть неподтвержденные сообщения о том, что моя сеть (Telstra Australia) сообщает о недостаточной силе GSM для отправки данных из приложения, но может просматривать Интернет и выполнять другие операции с данными без проблем. Это заставляет меня верить, что сила GSM в любом случае не подходит для проверки.

Я выполняю тесты на других телефонах Android в той же сети (все еще пытаюсь получить доступ к некоторым устройствам), но вполне возможно, что мы можем просматривать Интернет и отправлять (HTTP) данные из нашего приложения , он просто потерпит неудачу, если мы проверим уровень сигнала и всегда получим «99». На Optus SignalStrength.toString () всегда возвращает 99 -1 -1 -1 -1 -1 -1 gsm 3 после нескольких дней тестирования против нескольких башен.

Самым близким (без ответа) потоком SO является следующий: Получение RSCP и Ec / Io уровня сигнала с телефона, обслуживаемого сетью HSPA

В итоге:

  • Telstra Connection сообщает, что GSM имеет значение true и возвращает полезный уровень сигнала
  • Соединение Optus сообщает об истинном GSM, но всегда сообщает '99'
  • Возможно, GSM в любом случае не подходит для проверки, нам нужно попытаться получить ' фактическую мощность сети передачи данных '

1 Ответ

3 голосов
/ 12 октября 2011

после тестирования на нескольких телефонах от разных поставщиков и нескольких (австралийских) операторов, похоже, что это поведение характерно для Samsung Galaxy S2 и не было замечено в предыдущей версии (Galaxy S).

...