Фіктыўнае месцазнаходжанне на 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