Я пишу программное обеспечение, которое требует, чтобы обновления местоположения ячейки были получены или постоянно проверялись. У меня проблема в том, что когда экран выключен: а) уведомления прекращаются (с помощью PhonestateListener); b) когда таймер используется для проверки информации о ячейке текущей ячейки, возвращается информация о старой ячейке.
Я потратил много времени на поиск причины этого и нашел пару сообщений на эту тему. Однако я так и не нашел ответа или решения этой проблемы, примите, что телефон постоянно включает экран, чтобы получить новое местоположение ячейки.
Я проверил исходный код Android RIL, и кажется, что как только экран выключен, широковещательный приемник в RIL отключает состояние экрана и останавливает сообщения URC от модема. Я решил попробовать и вызвать эти внутренние функции, скажем, для сброса состояния экрана (плохое решение!), Но я продолжал получать ошибки разрешения из-за системных намерений, создаваемых в результате моих действий (я даже пытался получить разрешение su) .
Наконец, я попытался связаться напрямую с модемом, чтобы отправить команду + CSQ (используя функцию invokeOemRilRequestStrings в RIL). Однако эта часть завершилась неудачно, так как я продолжал получать ошибки о типе объекта, который не совпадает с ожидаемым типом класса ...
Итак ... Я хотел бы знать, может ли кто-нибудь указать мне решение, чтобы это сделать. Или это невозможно сделать на Android без изменения ПЗУ?
Заранее спасибо за помощь.