Фіктивне місцезнаходження на Xiaomi: MIUI і HyperOS

Скарга «вмикаю підміну, а за пару хвилин усе повертається» майже завжди надходить від власників Xiaomi, Redmi й POCO. Причина не в застосунку: MIUI і HyperOS керують фоновими процесами суворіше, ніж чистий Android, і вивантажують сервіс, який тримає підміну. Нижче — що саме відбувається і які три налаштування це виправляють.

  1. Увімкніть автозапуск для застосунку

    Налаштування → Застосунки → Керування застосунками → Mock Location → «Автозапуск» (у деяких версіях — «Робота у фоні»). Це найважливіше з трьох налаштувань: без нього після вивантаження процесу система не поверне його, і підміна не відновиться, доки ви не відкриєте застосунок вручну.

    Екран застосунку в налаштуваннях MIUI: перемикач «Автозапуск» увімкнено
  2. Зніміть обмеження батареї

    На тому самому екрані застосунку знайдіть «Економія заряду» або «Контроль активності» й виберіть «Без обмежень». У цьому режимі прошивка перестає присипляти фоновий сервіс на власний розсуд.

    Вибір режиму економії заряду для застосунку: позначено «Без обмежень»
  3. Закріпіть застосунок у недавніх

    Відкрийте список недавніх застосунків і потягніть картку Mock Location униз — з’явиться значок замка. Закріплені застосунки не закриваються, коли ви очищаєте список хрестиком або свайпом «прибрати все».

    Список недавніх застосунків: картку Mock Location закріплено значком замка, і вона не закривається під час очищення
  4. Перевірте, що підміна тримається

    Увімкніть підміну, згорніть застосунок і залиште телефон у спокої на десять-п’ятнадцять хвилин. Потім перевірте: сповіщення має залишатися в шторці, а інший застосунок із мапою — і далі показувати вибрану точку.

    Постійне сповіщення Mock Location у шторці: підміна геопозиції виконується у фоні

Що відбувається під капотом

Прошивка вивантажує процес застосунку — у системних журналах це видно як примусову зупинку за рішенням системи. Після цього тестові провайдери залишаються зареєстрованими в Android з останнім записаним значенням, але нові координати в них ніхто не пише: процесу, який їх створив, уже немає.

Ззовні це виглядає як «підміна завмерла»: координата та сама, але перестає оновлюватися, а згодом система повертає справжнє місцезнаходження.

Що застосунок робить сам

Два механізми відновлення працюють незалежно від налаштувань прошивки. Перший: під час відкриття застосунок звіряє збережений стан із фактичним і, якщо процес загинув, повертає підміну — цей шлях працює завжди. Другий: сторожовий таймер періодично перевіряє стан у фоні й намагається повернути сервіс сам.

Але в обох є межа: якщо прошивка забороняє застосунку стартувати у фоні, сервіс без вас не повернути — код у цей момент просто не виконується.

Чому автозапуск важливіший за інші налаштування

Різницю можна виміряти. З вимкненим автозапуском система після вивантаження процесу взагалі не перезапускає сервіс — відновлення відбувається, лише коли ви самі відкриваєте застосунок. З увімкненим автозапуском система повертає вивантажений сервіс приблизно за три секунди, застосунок підхоплює збережений стан і продовжує підміну без вашої участі.

Тож якщо робити лише одне з трьох налаштувань — робіть автозапуск.

Відновлення після перезавантаження

Активне фіктивне місцезнаходження відновлюється автоматично під час завантаження телефона за найранішою системною подією — ще до того, як ви розблокуєте екран. На телефоні з PIN-кодом це єдиний спосіб повернути підміну, не чекаючи, доки ви візьмете телефон у руки.

Вимірювання на реальному пристрої з HyperOS показало, чому це важливо: рання черга подій завантаження доходить до застосунку трохи більше ніж за секунду, а звичайна — за сімнадцять секунд, бо попереду в черзі системний оновлювач, хмарні сервіси й банківські застосунки.

Ті самі налаштування на інших оболонках

Схожа поведінка трапляється на Huawei (Налаштування → Батарея → Запуск додатків → вимкнути автоматичне керування для застосунку), Samsung (Налаштування → Обслуговування пристрою → Батарея → Обмеження фонової активності), OPPO, realme й vivo. Назви різні, суть та сама: дозволити застосунку працювати у фоні й виключити його з агресивної економії заряду. Якщо підміна однаково злітає — розбір типових причин.

Mock Location — підміна геолокації на Android без root

Безкоштовно, поза Google Play. Перед установленням можна звірити контрольну суму файлу.

Завантажити APK