Wyświetlanie tej opcji jest uzależnione od spełnienia jednego z 3 warunków:
albo urządzenie znajduje się na liście w kodzie apki AoD - spełnione dla telefonów: Mi 9 Lite, Mi 10 Lite, Redmi 10X 5G,
albo ROM ma w pliku system/etc/device_features/nazwaurzadzenia.xml spełnioną (zwracającą wartość true) zmienną aod_support_keycode_goto_dismiss (nie mam dumpów wszystkich urządzeń, wiem że spełnia to np. Mi Note 10),
albo spełniony jest warunek opisany poniższym kodem:
int i = SystemProperties.getInt("ro.vendor.touchfeature.type", 0);
if (((i >> 4) & 1) == 1) {
return true;
}
return false;
}
W kwestii wyjaśnienia - kod zachowuje się następująco (przy okazji nauczyłem się trochę o operatorach bitowych, bo sam tego nie wiedziałem, mogę się mylić):
- bierze wartość i z propa ro.vendor.touchfeature.type. dla Mi Note 10 wynosi ono 14,
- przechodzi do realizacji i >> 4. >> to znak przesunięcia bitowego w prawo - zamieniamy 14 na bity (1110), przesuwamy bity o 4 miejsca w prawo - wychodzi 0000, czyli dziesiętnie wartość 0.
- potem jak już ma ten wynik to przechodzi do & 1. & to znak AND, ustawia on wartość obydwu porównywanych bitów (w naszym przykładzie 0000 vs 0001) na 1, jeśli obydwa bity mają wartość 1. W naszym przypadku żaden nie będzie mieć takiej wartości, więc będzie dalej 0.
- na końcu sprawdza czy z tego wszystkiego wychodzi nasze normalne 1. Dla Mi Note 10 nie wychodzi, więc wartość będzie false (dowód na screenie poniżej - wychodzić będzie dla wartości od 16 do 31 na przykład), ale ponieważ spełniało ono warunek drugi - ma zmienną aod_support_keycode_goto_dismiss zwracającą true - to ta opcja jest widoczna.