Automatische Deaktivierung der Warnung für hohe Lautstärke ohne Root

Diejenigen von Ihnen, die in einem der Mitgliedsländer der Europäischen Union leben, sind wahrscheinlich auf die Warnung gestoßen, als sie versuchten, die Lautstärke Ihres Kopfhörers zu erhöhen, wie im obigen Funktionsbild gezeigt.

Gemäß den Bestimmungen des Europäischen Komitees für elektrotechnische Normung (CENELEC) müssen alle nach Februar 2013 verkauften abspielbaren elektronischen Geräte eine Ausgangslautstärke von maximal 85 dB haben. Benutzer können die Warnung außer Kraft setzen, um die Lautstärke auf maximal 100 dB zu erhöhen. In diesem Fall muss die Warnung jedoch nach 20 Stunden Musikwiedergabe erneut angezeigt werden.

Während wir nicht in eine Debatte über die Wirksamkeit dieser Verordnung zur Förderung der Gesundheit geraten werden, fragen sich Benutzer, die diese Warnung häufig umgehen, oft, ob dieser Prozess automatisiert werden kann. In vielen Fällen ist es ziemlich ärgerlich, manuell zuzustimmen, dass die Lautstärkebegrenzung außer Kraft gesetzt werden soll, z. B. wenn Sie die Musikwiedergabe über ein Bluetooth-Gerät aus der Ferne starten. Wir wollten daher einen Weg finden, um diese Warnung automatisch zu umgehen.

Es gibt bereits Lösungen, um das „sichere Volumenlimit“ zu umgehen, wenn Sie in unseren Foren nachsehen. Bisher mussten Sie jedoch für alle Lösungen ein Xposed-Modul installieren. Dies schränkt zwangsläufig die Verwendungsmöglichkeiten ein, da das Xposed Framework Root-Zugriff erfordert (was bedeutet, dass die meisten Telefone über einen nicht gesperrten Bootloader verfügen) sowie die Verwendung von Android-Versionen vor Nougat. Aber nachdem ich mich mit AOSP und verschiedenen Systemeinstellungen beschäftigt habe, habe ich eine Möglichkeit gefunden, das Limit für hohe Lautstärke / sichere Audiowiedergabe auf allen Geräten zu umgehen , ohne dass Root erforderlich ist.

Wenn Sie diese Anleitung befolgen, akzeptieren Sie alle Risiken, die mit dem Abhören von Medien mit hoher Lautstärke verbunden sind.


Tutorial zur sicheren Umgehung der Audiowarnung

Wenn Sie meinen vorherigen Artikel zum Aktivieren des immersiven Modus ohne Root-Zugriff gelesen haben, haben Sie möglicherweise damit begonnen, mit einigen Einstellungen zu experimentieren, die Sie auf Ihrem Telefon verstecken. Wenn nicht, empfehle ich Ihnen dringend, da ich festgestellt habe, dass fast jedes Gerät eine Tonne Goodies hat, die nur darauf warten, entdeckt zu werden. Dieser Trick ist nicht anders, da wir eine Systemeigenschaft verwenden, um die sichere Audiowarnung zu umgehen.

Insbesondere werden wir die System.Global-Eigenschaft audio_safe_volume_state sowohl beim Booten als auch in regelmäßigen Abständen ändern, sodass Android immer annimmt, dass Sie der Umgehung der Warnung zugestimmt haben. Diese Eigenschaft ist in AOSP definiert, das wir unten reproduzieren. Es gibt mehrere Zustände, die diese Eigenschaft annehmen kann, von 0 bis 3. 30 Sekunden nach dem Start oder nach jeweils 20 Stunden ununterbrochener Musikwiedergabe wird der Status auf "0" oder "nicht konfiguriert" gesetzt. Abhängig von Ihrem Ländercode für Mobiltelefone wird "1" für "Deaktiviert" oder "3" für "Aktiviert" festgelegt. Wenn Sie in der EU leben, ist diese Eigenschaft standardmäßig auf "3" eingestellt, wird jedoch für "inaktiv" in "2" geändert, wenn der Benutzer die Lautstärkewarnung manuell umgeht. Wir werden den Wert dieser Eigenschaft in den Status "Inaktiv" ändern (das Ändern in "Deaktiviert" hat bei mir nie funktioniert, falls Sie sich fragen).

Sichere Implementierung von Datenträgern in AOSP

  //========================================================================================== // 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 set to SAFE_MEDIA_VOLUME_INACTIVE by calling AudioService.disableSafeMediaVolume() // (when user opts out). private final int SAFE_MEDIA_VOLUME_NOT_CONFIGURED = 0; private final int SAFE_MEDIA_VOLUME_DISABLED = 1; private final int SAFE_MEDIA_VOLUME_INACTIVE = 2; private final int SAFE_MEDIA_VOLUME_ACTIVE = 3; private Integer mSafeMediaVolumeState; private int mMcc = 0; // mSafeMediaVolumeIndex is the cached value of config_safe_media_volume_index property private int mSafeMediaVolumeIndex; // mSafeMediaVolumeDevices lists the devices for which safe media volume is enforced, private final int 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. private int mMusicActiveMs; private static final int UNSAFE_VOLUME_MUSIC_ACTIVE_MS_MAX = (20 * 3600 * 1000); // 20 hours private static final int MUSIC_ACTIVE_POLL_PERIOD_MS = 60000; // 1 minute polling interval private static final int SAFE_VOLUME_CONFIGURE_TIMEOUT_MS = 30000; // 30s after boot completed 

Sie müssen zuerst Tasker und AutoTools installieren, damit wir diesen Trick automatisieren können. Technisch gesehen kann jede andere Automatisierungs-App außer Tasker verwendet werden. Ich bin jedoch nur mit Tasker vertraut, sodass Sie Anpassungen selbst vornehmen müssen, wenn Sie eine andere App bevorzugen. AutoTools ist jedoch für diesen Trick von entscheidender Bedeutung, da mit diesem Plug-In die sicheren Einstellungen auf unserem Gerät gesteuert werden können.

Wie in meinem Artikel zum Umschalten des Immersive-Modus erläutert, müssen wir AutoTools die Berechtigung WRITE_SECURE_SETTINGS erteilen. Dies liegt daran, dass der Befehl zum Steuern des Status der sicheren Audio-Lautstärke in der Settings.Global- Klasse definiert ist, obwohl die genaue Syntax für den Befehl in AOSP verborgen ist (genau wie im Immersive-Modus). Wenn Sie AutoTools bereits die Berechtigung WRITE_SECURE_SETTINGS erteilt haben, nachdem Sie mein vorheriges Tutorial zum immersiven Modus gelesen haben, können Sie den nächsten Abschnitt überspringen. Wenn nicht, müssen Sie es einrichten.


Erteilen der Berechtigung für sichere Einstellungen für AutoTools

Im Berechtigungsverwaltungssystem von Android definieren Anwendungen die Berechtigungen, die sie erhalten möchten, in der Manifest-Datei. Benutzer können dann Berechtigungen bei der Installation (vor Marshmallow) oder bei Bedarf (Marshmallow +) erteilen oder verweigern. Es gibt jedoch bestimmte Berechtigungen, denen Anwendungen nicht gewährt werden können, auch wenn sie sie im Manifest anfordern, z. B. WRITE_SECURE_SETTINGS. Dies liegt daran, dass Sie jeder Anwendung eine Berechtigung erteilen, die so mächtig ist, dass diese App eine Menge Kontrolle über Ihr Gerät hat.

Es gibt jedoch eine Problemumgehung, mit der wir jeder gewünschten App die Berechtigung WRITE_SECURE_SETTINGS erteilen können. Mit dem Paketmanager-Tool (pm) von ADB können wir jeder gewünschten Anwendung jede Berechtigung erteilen (vorausgesetzt, die Anwendung fordert diese Berechtigung in der Manifest-Datei an).

Als Erstes müssen Sie die ADB-Binärdatei auf Ihrem Computer installieren, gefolgt vom richtigen Treiber für Ihr Gerät. Aktivieren Sie dann das USB-Debugging in den Entwickleroptionen (gehen Sie zu Einstellungen -> Über Telefon und tippen Sie siebenmal auf Build-Nummer, falls Sie dies noch nicht getan haben) und schließen Sie Ihr Telefon an Ihren Computer an. Senden Sie abschließend den folgenden Befehl, sobald Sie ein Terminal geöffnet haben:

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

Jetzt können Sie mit AutoTools alle globalen, sicheren oder Systemeinstellungen auf Ihrem Gerät ändern. Es gibt verschiedene Möglichkeiten, mit diesen Einstellungen herumzuspielen, und die Liste der verfügbaren Einstellungen in jeder Kategorie hängt vollständig von Ihrem Gerät und der Softwareversion ab. Diese Diskussion ist jedoch ein anderes Mal. In jedem Fall werden wir Ihnen zeigen, wie Sie mit AutoTools den Status des sicheren Volumes steuern können.


Deaktivieren der sicheren Audiowarnung beim Booten

Hier ist die Beschreibung des Profils für diejenigen von Ihnen, die mit Tasker vertraut sind. Wenn Sie mit Tasker nicht vertraut sind, lesen Sie die schrittweisen Anweisungen.

Deaktivieren Sie Safe Audio beim Booten

 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 ] 

Öffnen Sie Tasker, damit wir ein neues Profil erstellen können. Tippen Sie unten rechts auf das Symbol +, um ein neues Profil zu erstellen. Fügen Sie einen neuen Ereigniskontext hinzu und gehen Sie zu Tasker -> Monitor Start. Wir verwenden diesen Ereigniskontext, der beim Starten von Tasker ausgelöst wird, und nicht den Ereigniskontext, der beim Starten des Telefons aktiviert wird, da ersterer weitaus zuverlässiger ist als letzterer.

Drücken Sie in jedem Fall die Zurück-Taste, um eine Aufgabe zu erstellen, die diesem Profil zugeordnet ist. Nennen Sie die Aufgabe etwas, da es keine Rolle spielt. Sobald Sie den Bildschirm zum Erstellen von Aufgaben aufgerufen haben, drücken Sie auf das Symbol + in der unteren Mitte des Bildschirms, um eine neue Aktion zu erstellen. Gehen Sie für die erste Aktion zu Aufgabe -> Warten und lassen Sie sie 30 Sekunden warten . Dies berücksichtigt die Regel „30 Sekunden nach dem Start“, die in Android zum Festlegen des Status des sicheren Volumes verwendet wird.

Als nächstes erstellen Sie eine neue Aktion und gehen zu Plugin -> AutoTools -> Sichere Einstellungen. Drücken Sie den Stift, um den Konfigurationsbildschirm für AutoTools zu öffnen. Gehen Sie zu Benutzerdefinierte Einstellung. Geben Sie als Einstellungstyp Global ein . Geben Sie als Namen audio_safe_volume_state ein. Geben Sie als Eingabetyp int ein. Stellen Sie sicher, dass Sie alles richtig eingestellt haben. Die Konfiguration sollte mit dem mittleren Screenshot unten übereinstimmen. Der Befehl muss genau so gesendet werden , wie ich ihn geschrieben habe, sonst hat er keine Auswirkungen.

Wenn Sie fertig sind, kehren Sie zum Hauptmenü von Tasker zurück, da Sie ein anderes Profil erstellen müssen. Das gerade erstellte Konto wird berücksichtigt, wenn der Status des sicheren Volumes 30 Sekunden nach dem Start festgelegt wird. Für diejenigen unter Ihnen, die Ihr Gerät fast nie neu starten, wird jedoch ein anderes Profil erstellt, um diesen Wert regelmäßig festzulegen.


Deaktivieren Sie die Safe Audio-Warnung regelmäßig

Hier ist die Beschreibung des Profils für diejenigen von Ihnen, die mit Tasker vertraut sind. Wenn Sie mit Tasker nicht vertraut sind, lesen Sie die schrittweisen Anweisungen.

Deaktivieren Sie Safe Audio regelmäßig

 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 ] 

Erstellen Sie ein neues Profil, diesmal mit einem Zeitkontext . Leider ist mir keine Methode bekannt, mit der die aktuelle kumulative Zeit für die Medienwiedergabe ohne Root abgerufen werden kann. Stattdessen setzen wir den Status für die sichere Lautstärke regelmäßig alle 24 Stunden auf inaktiv (… es ist nicht so, als ob ihr euch tatsächlich 20 anhört Stunden Musik innerhalb von 24 Stunden, oder?). Wie auch immer, die Tasker-Oberfläche zum Festlegen einer periodischen Aufgabe ist etwas schrecklich, aber das Wesentliche ist, dass Sie die "Von" - und die "Bis" -Zeit auf dieselbe Zeit einstellen möchten. Auf diese Weise behandelt Tasker die Aufgabe so, als ob sie nur einmal zu einer festgelegten Zeit ausgelöst werden soll (ich habe sie 1 Minute vor Mitternacht erstellt).

Kopieren Sie für die Aufgabe einfach das, was Sie für Aktion 2 im vorherigen Profil getan haben. In diesem Fall gibt es keine neue oder andere Aktion, da wir lediglich alle 24 Stunden den Wert dieser globalen Systemeigenschaft ändern.

Nachdem Sie beide Profile eingerichtet haben, sind Sie fertig! Starten Sie Ihr Telefon neu und Sie sollten jetzt nicht mehr die Warnung "Sichere Lautstärke" sehen, wenn Sie Ihre Kopfhörer anschließen.


Herunterladen und in Tasker importieren

Wie immer stellen wir die XML-Datei der Skripte bereit, die Sie herunterladen und importieren können. Laden Sie die Dateien einfach über den folgenden Link herunter und speichern Sie sie an einem beliebigen Ort in Ihrem internen Speicher. Öffne Tasker und deaktiviere den Anfängermodus in den Einstellungen. Kehren Sie dann zum Hauptbildschirm zurück und drücken Sie lange auf die Registerkarte „Profil“ oben oben. Es sollte ein Popup mit einer der Optionen "Importieren" angezeigt werden. Tippen Sie darauf und navigieren Sie zu dem Speicherort der .prf.xml-Dateien und wählen Sie die zu importierende Datei aus. Wiederholen Sie dies für das zweite Profil.

Laden Sie das Profil "Deaktiviere sichere Audiowarnung beim Booten" herunter Laden Sie das Profil "Deaktiviere sichere Audiowarnung regelmäßig" herunter

Wir hoffen, Sie finden diesen Tipp hilfreich. Lassen Sie uns in den Kommentaren unten wissen, ob dies für Sie funktioniert!