Как правильно использовать requestCellInfoUpdate ()? - PullRequest
0 голосов
/ 07 апреля 2020

Используя onSignalStrengthsChanged, getAllCellInfo() и связанные с ними методы, мое приложение отслеживает данные сигнала ячейки и отображает результаты в режиме реального времени. Мой код работает очень хорошо, ориентируясь на API 28 и ниже, автоматически обновляя данные по мере их изменения. Таргетирование API 29 приводит к тому, что некоторым Android 10 устройствам не удается обновить данные - но не всем.

Я обнаружил, что TelephonyManager.requestCellInfoUpdate() был добавлен в API 29, что может (?) необходимо решить эту проблему. Тем не менее, я не смог найти никакой информации об этом методе, кроме краткого определения в Android Reference . Нужно ли использовать этот метод для обновления sh информации о ячейке? Доступны ли какие-либо примеры кода или дополнительные объяснения?

Если этот метод не подходит, есть ли другое изменение в API 29, которое может вызвать такое поведение? ACCESS_FINE_LOCATION подтверждено, чтобы быть предоставленным, который, кажется, является единственным другим соответствующим изменением API.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020
// 1. Create a TelephonyManager instance 
telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);  
// 2. Define a CellInfoCallback callback
TelephonyManager.CellInfoCallback cellInfoCallback = new TelephonyManager.CellInfoCallback() {  
    @Override
    public void onCellInfo(List<CellInfo> cellInfo) {
        // DO SOMETHING
    } 
}
// 3. Now you can call the method to DO SOMETHING
telephonyManager.requestCellInfoUpdate(this.getMainExecutor(), cellInfoCallback);
0 голосов
/ 07 апреля 2020

При чтении документов об этом упоминается в документации getAllCellInfo().

Приложения с таргетингом Android Q или выше больше не будут вызывать обновление sh кэшировал CellInfo, вызывая этот API. Вместо этого эти приложения будут получать последние кэшированные результаты, которые могут быть не текущими. Приложения с таргетингом Android Q или выше, чем wi sh для запроса обновленного CellInfo, должны вызывать requestCellInfoUpdate (); однако во всех случаях обновления будут ограничены по скорости и не гарантируются. Чтобы определить актуальность данных CellInfo, звонящие должны проверить CellInfo # getTimeStamp ().

Поэтому предпочтение отдается, если вы нацелены на Android Q или выше, вам следует выбрать requestCellInfoUpdate()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...