Jak automatycznie wyłączyć ostrzeżenie o dużej głośności bez rootowania

Poradnik pokazujący, jak wyłączyć ostrzeżenie o dużej głośności lub bezpiecznym dźwięku, które jest wymagane na urządzeniach sprzedawanych w UE. Działa to na wszystkich urządzeniach bez rootowania.

Ci z Was, którzy mieszkają w jednym z krajów członkowskich Unii Europejskiej, prawdopodobnie natknęli się na ostrzeżenie podczas próby zwiększenia głośności słuchawek, jak pokazano na powyższym obrazku.

Zgodnie z przepisami Europejskiego Komitetu Normalizacyjnego Elektrotechniki (CENELEC), wszystko w formie elektronicznej urządzenia umożliwiające odtwarzanie multimediów sprzedane po lutym 2013 r. muszą mieć domyślny poziom głośności wyjściowej wynoszący maksymalnie 85 dB. Użytkownicy mogą pominąć ostrzeżenie i zwiększyć głośność maksymalnie do 100 dB, ale w takim przypadku ostrzeżenie musi pojawić się ponownie po 20 godzinach odtwarzania muzyki.

Nie będziemy jednak wdawać się w dyskusję na temat skuteczności tej regulacji w promowaniu dobra zdrowia, użytkownicy, którzy często decydują się na ominięcie tego ostrzeżenia, często zastanawiają się, czy jest to możliwe zautomatyzowane. W wielu przypadkach dość denerwująca jest konieczność ręcznego wyrażania zgody na obejście limitu głośności, na przykład na początku zdalne odtwarzanie muzyki na urządzeniu Bluetooth, dlatego chcieliśmy znaleźć sposób na automatyczne ominięcie tej funkcji ostrzeżenie.

Rozwiązania umożliwiające ominięcie „limitu bezpiecznej głośności” już istnieją, jeśli przeszukasz nasze fora, ale jak dotąd wszystkie rozwiązania wymagały od Ciebie zainstalować Xposed Moduł. To z pewnością ogranicza liczbę osób, które mogą z niego korzystać, ponieważ Xposed Framework wymaga dostępu do konta root (co oznacza odblokowany program ładujący w większości telefonów), a także korzystania z wersji Androida wcześniejszych niż Nougat. Ale po zagłębieniu się w AOSP i różnych ustawieniach systemu znalazłem sposób na ominięcie limitu wysokiego poziomu głośności/bezpiecznego dźwięku na wszystkich urządzeniach bez konieczności rootowania.

Postępując zgodnie z tym przewodnikiem, akceptujesz wszelkie ryzyko związane ze słuchaniem multimediów przy wysokim poziomie głośności.


Samouczek bezpiecznego obejścia ostrzeżenia dźwiękowego

Jeśli czytałeś mój poprzedni artykuł nt włączenie trybu immersyjnego bez dostępu do konta root, być może zacząłeś bawić się niektórymi ustawieniami, które możesz znaleźć ukryte w telefonie. Jeśli jeszcze tego nie zrobiłeś, gorąco polecam to zrobić, ponieważ odkryłem, że prawie każde urządzenie ma mnóstwo gadżetów, które tylko czekają na odkrycie. Ta sztuczka nie różni się od tej, ponieważ użyjemy właściwości systemowej, aby ominąć bezpieczne ostrzeżenie dźwiękowe.

W szczególności będziemy modyfikować plik System. Globalna własność audio_safe_volume_state zarówno podczas uruchamiania, jak i okresowo, więc Android zawsze będzie myślał, że zgodziłeś się na ominięcie ostrzeżenia. Ta nieruchomość jest zdefiniowane w AOSP, który odtwarzamy poniżej. Istnieje kilka stanów, które może przyjąć ta właściwość, od 0-3. 30 sekund po uruchomieniu lub po każdych 20 godzinach ciągłego odtwarzania muzyki stan jest ustawiany na „0” lub „nieskonfigurowany”. Następnie jest ustawiany na „1” dla „wyłączony” lub „3” dla „włączony”, w zależności od użytkownika Kod kraju telefonu komórkowego. Jeśli mieszkasz w UE, ta właściwość jest domyślnie ustawiona na „3”, ale zmienia się na „2” w przypadku „nieaktywnego” za każdym razem, gdy użytkownik ręcznie ominie ostrzeżenie o głośności. Zmienimy wartość tej właściwości na stan „nieaktywny”. (zmiana na „wyłączone” nigdy dla mnie nie zadziałała, na wypadek gdybyś się zastanawiał).


//
// Safe media volume management.
// MUSIC stream volume level is limited when headphones are connected according to safety
// regulation. When the user attempts to raise the volume above the limit, a warning is
// displayed and the user has to acknowlegde before the volume is actually changed.
// The volume index corresponding to the limit is stored in config_safe_media_volume_index
// property. Platforms with a different limit must set this property accordingly in their
// overlay.
//
// mSafeMediaVolumeState indicates whether the media volume is limited over headphones.
// It is SAFE_MEDIA_VOLUME_NOT_CONFIGURED at boot time until a network service is connected
// or the configure time is elapsed. It is then set to SAFE_MEDIA_VOLUME_ACTIVE or
// SAFE_MEDIA_VOLUME_DISABLED according to country option. If not SAFE_MEDIA_VOLUME_DISABLED, it
// can be setto SAFE_MEDIA_VOLUME_INACTIVE bycalling AudioService.disableSafeMediaVolume()
// (when user opts out).
privatefinalint SAFE_MEDIA_VOLUME_NOT_CONFIGURED = 0;
privatefinalint SAFE_MEDIA_VOLUME_DISABLED = 1;
privatefinalint SAFE_MEDIA_VOLUME_INACTIVE = 2;
privatefinalint SAFE_MEDIA_VOLUME_ACTIVE = 3;
private Integer mSafeMediaVolumeState;
privateint mMcc = 0;
// mSafeMediaVolumeIndex is the cached value of config_safe_media_volume_index property
privateint mSafeMediaVolumeIndex;
// mSafeMediaVolumeDevices lists the devices for which safe media volume is enforced,
privatefinalint mSafeMediaVolumeDevices = AudioSystem.DEVICE_OUT_WIRED_HEADSET |
AudioSystem.DEVICE_OUT_WIRED_HEADPHONE;
// mMusicActiveMs is the cumulative time of music activity since safe volume was disabled.
// When this time reaches UNSAFE_VOLUME_MUSIC_ACTIVE_MS_MAX, the safe media volume is re-enabled
// automatically. mMusicActiveMs is rounded to a multiple of MUSIC_ACTIVE_POLL_PERIOD_MS.
privateint mMusicActiveMs;
privatestaticfinalint UNSAFE_VOLUME_MUSIC_ACTIVE_MS_MAX = (20 * 3600 * 1000); // 20 hours
privatestaticfinalint MUSIC_ACTIVE_POLL_PERIOD_MS = 60000; // 1 minute polling interval
privatestaticfinalint SAFE_VOLUME_CONFIGURE_TIMEOUT_MS = 30000; // 30s after boot completed

Czytaj więcej

Najpierw musisz zainstalować Zadanie I Narzędzia automatyczne więc możemy zautomatyzować tę sztuczkę. Technicznie rzecz biorąc, można używać dowolnej innej aplikacji do automatyzacji oprócz Taskera, ale znam tylko Taskera, więc będziesz musiał samodzielnie wprowadzić zmiany, jeśli wolisz używać innej aplikacji. Jednak AutoTools ma kluczowe znaczenie w tej sztuczce, ponieważ ta wtyczka pozwoli nam kontrolować Bezpieczne ustawienia na naszym urządzeniu.

Jak wyjaśniono w moim artykule na temat przełączania trybu immersyjnego, musimy przyznać ZAPISZ_SECURE_SETTINGS pozwolenie na AutoTools. Dzieje się tak, ponieważ polecenie kontrolowania stanu bezpiecznej głośności dźwięku jest zdefiniowane w sekcji Ustawienia. Światowy class, chociaż dokładna składnia polecenia jest ukryta w AOSP (tak jak było to w trybie immersyjnym). Jeśli już udzieliłeś uprawnienia WRITE_SECURE_SETTINGS AutoTools po przeczytaniu mojego poprzedniego samouczka na temat trybu immersyjnego, możesz pominąć następną sekcję. Jeśli nie, musisz to skonfigurować.


W systemie zarządzania uprawnieniami systemu Android aplikacje definiują uprawnienia, które chcą otrzymać, w pliku manifestu. Użytkownicy mogą następnie przyznawać lub odmawiać uprawnień podczas instalacji (w wersji wcześniejszej niż Marshmallow) lub na żądanie (Marshmallow+). Istnieją jednak pewne uprawnienia, których aplikacjom nie można udzielić, nawet jeśli zażądają tego w Manifeście, np ZAPISZ_SECURE_SETTINGS. Dzieje się tak dlatego, że przyznanie dowolnej aplikacji tak potężnego uprawnienia zapewniłoby tej aplikacji ogromną kontrolę nad Twoim urządzeniem.

Istnieje jednak jedno obejście, którego możemy użyć, aby przyznać uprawnienia WRITE_SECURE_SETTINGS dowolnej aplikacji. Używając ADB menedżer pakietów (po południu) narzędzia, możemy przyznać dowolne uprawnienia dowolnej aplikacji (pod warunkiem, że aplikacja poprosi o to pozwolenie w pliku manifestu).

Pierwszą rzeczą, którą musisz zrobić, to zainstaluj plik binarny ADB na komputer, a następnie odpowiedni sterownik dla Twojego urządzenia. Następnie włącz debugowanie USB w Opcjach programisty (przejdź do Ustawienia -> Informacje o telefonie i dotknij Numer kompilacji 7 razy, jeśli jeszcze tego nie zrobiłeś) i podłącz telefon do komputera. Na koniec wyślij następujące polecenie po otwarciu terminala:

adb shell pm grant com.joaomgcd.autotools android.permission.WRITE_SECURE_SETTINGS

Teraz AutoTools będzie mogło zmienić dowolne ustawienia globalne, bezpieczne lub systemowe na Twoim urządzeniu. Istnieją różne sposoby zabawy tymi ustawieniami, a lista dostępnych ustawień znajduje się w każda kategoria całkowicie zależy od urządzenia i wersji oprogramowania, ale ta dyskusja jest na inny temat czas. W każdym razie będziemy dalej pokazywać, jak używać AutoTools do kontrolowania bezpiecznego stanu woluminu.


Wyłączanie ostrzeżenia o bezpiecznym dźwięku podczas uruchamiania

Oto opis profilu dla tych z Was, którzy znają Taskera. Jeśli nie znasz Taskera, przeczytaj instrukcje krok po kroku.

Wyłącz Bezpieczny dźwięk podczas uruchamiania

Profile: Disable Safe Audio On Boot (6)
Event: Monitor Start
Enter: Anon (7)
A1: Wait[ MS: 0 Seconds: 30 Minutes: 0 Hours: 0 Days: 0 ]
A2: AutoTools Secure Settings [ Configuration: Setting Type: Global
Name: audio_safe_volume_state
Input Type: Int
Value: 2 Timeout (Seconds):60 ]

Czytaj więcej

Otwórz Taskera, abyśmy mogli utworzyć nowy profil. W prawym dolnym rogu dotknij przycisku + ikonę, aby utworzyć nowy profil. Dodaj nowy Wydarzenie kontekst i przejdź do Tasker -> Uruchomienie monitora. Używamy kontekstu zdarzenia, który uruchamia się po uruchomieniu Taskera, a nie kontekstu zdarzenia, który aktywuje się po uruchomieniu telefonu, ponieważ ten pierwszy jest znacznie bardziej niezawodny niż drugi.

W każdym razie naciśnij przycisk Wstecz, ponieważ teraz utworzymy zadanie powiązane z tym profilem. Nazwij zadanie dowolnie, ponieważ nie ma to znaczenia. Po wejściu na ekran tworzenia zadania naciśnij przycisk + ikonę w dolnej, środkowej części ekranu, aby utworzyć nową akcję. Aby wykonać pierwszą akcję, przejdź do Zadanie --> Czekaj i niech to czeka 30 sekund. Odpowiada to zasadzie „30 sekund po uruchomieniu” używanej w systemie Android w celu ustawienia bezpiecznego stanu woluminu.

Następnie utwórz nową akcję i przejdź do Wtyczka --> AutoTools --> Bezpieczne ustawienia. Naciśnij ołówek, aby otworzyć ekran konfiguracji AutoTools. Iść do Ustawienie niestandardowe. W polu Typ ustawienia wprowadź Światowy. W polu Nazwa wprowadź audio_safe_volume_state. Jako typ wejścia zrób to wew. Dla wartości zrób to 2. Sprawdź, czy wszystko umieściłeś poprawnie, konfiguracja powinna odpowiadać środkowi zrzutu ekranu poniżej. Polecenie musi zostać wysłane Dokładnie tak jak pisałem, inaczej nie będzie to miało żadnego wpływu.

Gdy skończysz, wróć do głównego menu Taskera, ponieważ będziemy musieli utworzyć kolejny profil. Ten, który właśnie utworzyliśmy, uwzględnia stan bezpiecznego woluminu ustawiony 30 sekund po uruchomieniu, ale dla dla tych z Was, którzy prawie nigdy nie uruchamiają ponownie urządzenia, utworzymy inny profil, aby okresowo to ustawiać wartość.


Wyłącz okresowo ostrzeżenie o bezpiecznym dźwięku

Oto opis profilu dla tych z Was, którzy znają Taskera. Jeśli nie znasz Taskera, przeczytaj instrukcje krok po kroku.

Okresowo wyłączaj Bezpieczny dźwięk

Profile: Disable Safe Audio Periodically (21)
Time: 11:59PM
Enter: Anon (122)
A1: AutoTools Secure Settings [ Configuration: Setting Type: Global
Name: audio_safe_volume_state
Input Type: Int
Value: 2 Timeout (Seconds):60 ]

Czytaj więcej

Utwórz nowy profil, tym razem z rozszerzeniem Czas kontekst. Niestety nie znam żadnej metody uzyskania bieżącego skumulowanego czasu odtwarzania multimediów bez root, więc zamiast tego będziemy okresowo ustawiać stan bezpiecznego woluminu na nieaktywny raz na 24 godziny (... to nie jest tak, że słuchacie 20 godzin muzyki w ciągu 24 godzin, prawda?). Tak czy inaczej, interfejs Taskera do ustawiania zadań okresowych jest trochę okropny, ale sednem tego jest to, że chcesz ustawić czas „Od” i „Do” na ten sam czas. W ten sposób Tasker potraktuje to tak, jakbyś chciał, aby Zadanie uruchamiało się tylko raz o określonej godzinie (ja zrobiłem to 1 minutę przed północą).

Jeśli chodzi o zadanie, po prostu skopiuj to, co zrobiłeś dla akcji nr 2 w poprzednim profilu. W tym przypadku nie ma nowej ani innej akcji, ponieważ jedyne, co robimy, to zmienianie wartości tej właściwości systemu globalnego raz na 24 godziny.

Teraz, gdy skonfigurowałeś oba te profile, gotowe! Uruchom ponownie telefon i nie powinieneś już widzieć ostrzeżenia o „bezpiecznej głośności” po podłączeniu słuchawek.


Pobierz i zaimportuj do Taskera

Jak zawsze udostępniamy plik XML skryptów, który można pobrać i zaimportować. Po prostu pobierz pliki, korzystając z łącza poniżej i zapisz je w dowolnym miejscu w pamięci wewnętrznej. Otwórz Taskera i wyłącz tryb dla początkujących w Preferencjach. Następnie wróć do ekranu głównego i naciśnij długo kartę „Profil” u góry. Powinieneś zobaczyć wyskakujące okienko z jedną z opcji „Importuj”. Stuknij w to i przejdź do miejsca, w którym zapisałeś pliki .prf.xml i wybierz ten plik do zaimportowania. Powtórz tę czynność dla drugiego profilu.

Pobierz profil „Wyłącz ostrzeżenie o bezpiecznym dźwięku podczas rozruchu”.

Pobierz profil „Okresowe wyłączanie ostrzeżenia o bezpiecznym dźwięku”.

Mamy nadzieję, że ta wskazówka będzie dla Ciebie przydatna. Daj nam znać w komentarzach poniżej, czy to działa dla Ciebie!