Πώς να απενεργοποιήσετε αυτόματα την προειδοποίηση υψηλής έντασης χωρίς Root

Ένα σεμινάριο σχετικά με τον τρόπο απενεργοποίησης της προειδοποίησης υψηλής έντασης ή ασφαλούς ήχου που απαιτείται σε συσκευές που πωλούνται στην ΕΕ. Αυτό λειτουργεί σε όλες τις συσκευές χωρίς root.

Όσοι από εσάς ζείτε σε ένα από τα κράτη μέλη της Ευρωπαϊκής Ένωσης πιθανότατα έχετε συναντήσει την προειδοποίηση όταν προσπαθείτε να αυξήσετε την ένταση του ήχου των ακουστικών σας, όπως φαίνεται στην παραπάνω εικόνα χαρακτηριστικών.

Σύμφωνα με τους κανονισμούς της Ευρωπαϊκής Επιτροπής Ηλεκτροτεχνικής Τυποποίησης (CENELEC), όλα τα ηλεκτρονικά συσκευές με δυνατότητα αναπαραγωγής πολυμέσων που πωλούνται μετά τον Φεβρουάριο του 2013 πρέπει να έχουν προεπιλεγμένο επίπεδο έντασης ήχου εξόδου το πολύ 85 dB. Οι χρήστες μπορούν να επιλέξουν να παρακάμψουν την προειδοποίηση για να αυξήσουν την ένταση έως τα 100 dB, αλλά για να το κάνουν αυτό η προειδοποίηση πρέπει να εμφανίζεται ξανά μετά από 20 ώρες αναπαραγωγής μουσικής.

Ενώ δεν πρόκειται να μπούμε σε μια συζήτηση σχετικά με την αποτελεσματικότητα αυτού του κανονισμού στην προώθηση του καλού υγείας, οι χρήστες που επιλέγουν συχνά να παρακάμψουν αυτήν την προειδοποίηση συχνά αναρωτιούνται εάν αυτή η διαδικασία μπορεί να είναι αυτοματοποιημένη. Υπάρχουν πολλές περιπτώσεις όπου είναι μάλλον ενοχλητικό να πρέπει να συμφωνήσετε με μη αυτόματο τρόπο να παρακάμψετε το όριο έντασης, όπως όταν ξεκινάτε αναπαραγωγή μουσικής από απόσταση σε μια συσκευή Bluetooth, γι' αυτό θέλαμε να βρούμε έναν τρόπο αυτόματης παράκαμψης προειδοποίηση.

Λύσεις για την παράκαμψη του "ασφαλούς ορίου όγκου" υπάρχουν ήδη εάν κάνετε αναζήτηση στα φόρουμ μας, αλλά μέχρι στιγμής όλες οι λύσεις σας απαιτούσαν να εγκαθιστώ ένα Xposed Μονάδα μέτρησης. Αυτό περιορίζει αναγκαστικά ποιος μπορεί να το χρησιμοποιήσει, καθώς το Xposed Framework απαιτεί να έχετε πρόσβαση root (που σημαίνει ξεκλείδωτο bootloader στα περισσότερα τηλέφωνα) καθώς και να είστε σε εκδόσεις Android πριν από το Nougat. Αλλά αφού έψαξα στο AOSP και σε διάφορες ρυθμίσεις συστήματος, ανακάλυψα έναν τρόπο να παρακάμψω το όριο υψηλής έντασης/ασφαλούς ήχου σε όλες τις συσκευές χωρίς να απαιτείται root.

Ακολουθώντας αυτόν τον οδηγό, αποδέχεστε τυχόν κινδύνους που ενέχει η ακρόαση πολυμέσων σε υψηλά επίπεδα έντασης.


Οδηγός παράκαμψης ασφαλούς προειδοποίησης ήχου

Αν έχετε διαβάσει το προηγούμενο άρθρο μου για ενεργοποίηση της λειτουργίας Immersive χωρίς πρόσβαση root, τότε μπορεί να έχετε αρχίσει να παίζετε με ορισμένες από τις ρυθμίσεις που μπορείτε να βρείτε κρυφές στο τηλέφωνό σας. Αν δεν το έχετε κάνει, σας συνιστώ ανεπιφύλακτα να το κάνετε, καθώς έχω διαπιστώσει ότι σχεδόν κάθε συσκευή έχει ένα σωρό καλούδια που περιμένουν να τα ανακαλύψετε. Αυτό το τέχνασμα δεν διαφέρει, καθώς θα χρησιμοποιήσουμε μια ιδιότητα συστήματος για να παρακάμψουμε την ασφαλή ηχητική προειδοποίηση.

Συγκεκριμένα, θα τροποποιήσουμε το Σύστημα. Παγκόσμια ιδιοκτησία audio_safe_volume_state τόσο κατά την εκκίνηση όσο και περιοδικά, έτσι το Android θα πιστεύει πάντα ότι έχετε συναινέσει να παρακάμψετε την προειδοποίηση. Αυτή η ιδιοκτησία είναι ορίζεται στο AOSP, το οποίο αναπαράγουμε παρακάτω. Υπάρχουν πολλές καταστάσεις που μπορεί να πάρει αυτό το ακίνητο, που κυμαίνονται από 0-3. 30 δευτερόλεπτα μετά την εκκίνηση ή μετά από κάθε 20 ώρες συνεχούς αναπαραγωγής μουσικής, η κατάσταση ορίζεται σε '0' ή 'δεν έχει διαμορφωθεί'. Στη συνέχεια ορίζεται σε '1' για 'απενεργοποιημένο' ή '3' για 'ενεργοποιημένο' ανάλογα με τη δική σας Κωδικός χώρας κινητής τηλεφωνίας. Εάν ζείτε στην ΕΕ, αυτή η ιδιότητα έχει οριστεί σε "3" από προεπιλογή, αλλά αλλάζει σε "2" για "ανενεργή" κάθε φορά που ο χρήστης παρακάμπτει χειροκίνητα την προειδοποίηση έντασης ήχου. Θα αλλάξουμε την τιμή αυτής της ιδιότητας στην κατάσταση "ανενεργή". (Το να το αλλάξω σε 'disabled' δεν μου λειτούργησε ποτέ, σε περίπτωση που αναρωτιέστε).


//
// 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

Διαβάστε περισσότερα

Πρώτα θα χρειαστεί να εγκαταστήσετε Tasker και AutoTools έτσι μπορούμε να αυτοματοποιήσουμε αυτό το τέχνασμα. Τεχνικά, μπορεί να χρησιμοποιηθεί οποιαδήποτε άλλη εφαρμογή αυτοματισμού εκτός από το Tasker, αλλά είμαι εξοικειωμένος μόνο με το Tasker, επομένως θα πρέπει να κάνετε προσαρμογές μόνοι σας, αν προτιμάτε να χρησιμοποιήσετε διαφορετική εφαρμογή. Το AutoTools, ωστόσο, είναι κρίσιμο για αυτό το τέχνασμα, καθώς αυτή η προσθήκη θα μας επιτρέψει να ελέγχουμε τις Ασφαλείς ρυθμίσεις στη συσκευή μας.

Όπως εξηγείται στο άρθρο μου σχετικά με την εναλλαγή της λειτουργίας εμβαπτιστικής λειτουργίας, πρέπει να χορηγήσουμε το WRITE_SECURE_SETTINGS άδεια στα AutoTools. Αυτό συμβαίνει επειδή η εντολή για τον έλεγχο της κατάστασης ασφαλούς έντασης ήχου ορίζεται κάτω από το Ρυθμίσεις. Παγκόσμια κατηγορίας, αν και η ακριβής σύνταξη για την εντολή είναι κρυμμένη στο AOSP (όπως ακριβώς ήταν και για τη λειτουργία Immersive). Εάν έχετε ήδη παραχωρήσει την άδεια WRITE_SECURE_SETTINGS στο AutoTools αφού διαβάσατε τον προηγούμενο εκμάθησή μου σχετικά με τη λειτουργία καθηλωτικής λειτουργίας, τότε μπορείτε να παραλείψετε την επόμενη ενότητα. Εάν όχι, τότε θα πρέπει να το ρυθμίσετε.


Σύμφωνα με το σύστημα διαχείρισης αδειών του Android, οι εφαρμογές ορίζουν τα δικαιώματα που θέλουν να εκχωρηθούν στο αρχείο Manifest. Στη συνέχεια, οι χρήστες μπορούν να χορηγήσουν ή να αρνηθούν δικαιώματα κατά την εγκατάσταση (προ-Marshmallow) ή κατά παραγγελία (Marshmallow+). Ωστόσο, υπάρχουν ορισμένα δικαιώματα που δεν μπορούν να παραχωρηθούν οι αιτήσεις ακόμη και αν το ζητήσουν στο Μανιφέστο, όπως π.χ. WRITE_SECURE_SETTINGS. Αυτό οφείλεται στο γεγονός ότι η εκχώρηση μιας τόσο ισχυρής άδειας σε οποιαδήποτε εφαρμογή θα έδινε σε αυτήν την εφαρμογή έναν τόνο ελέγχου της συσκευής σας.

Ωστόσο, υπάρχει ένας τρόπος αντιμετώπισης που μπορούμε να χρησιμοποιήσουμε για να εκχωρήσουμε την άδεια WRITE_SECURE_SETTINGS σε οποιαδήποτε εφαρμογή θέλουμε. Με τη χρήση ADB's διαχειριστής πακέτων (μ.μ.) εργαλείο, μπορούμε να εκχωρήσουμε οποιαδήποτε άδεια σε οποιαδήποτε εφαρμογή θέλουμε (υπό την προϋπόθεση ότι η εφαρμογή ζητά αυτήν την άδεια στο αρχείο Manifest).

Το πρώτο πράγμα που θα χρειαστεί να κάνετε είναι εγκαταστήστε το δυαδικό ADB στον υπολογιστή σας ακολουθούμενο από το σωστό πρόγραμμα οδήγησης για τη συσκευή σας. Στη συνέχεια, ενεργοποιήστε τον εντοπισμό σφαλμάτων USB στις Επιλογές προγραμματιστή (μεταβείτε στις Ρυθμίσεις --> Σχετικά με το τηλέφωνο και πατήστε τον Αριθμό έκδοσης 7 φορές, εάν δεν το έχετε κάνει ήδη) και συνδέστε το τηλέφωνό σας στον υπολογιστή σας. Τέλος, στείλτε την ακόλουθη εντολή μόλις ανοίξετε ένα τερματικό:

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

Τώρα το AutoTools θα έχει τη δυνατότητα να αλλάξει οποιαδήποτε ρύθμιση Καθολική, Ασφαλής ή Συστήματος στη συσκευή σας. Υπάρχουν διάφοροι τρόποι με τους οποίους μπορείτε να παίξετε με αυτές τις ρυθμίσεις και τη λίστα των διαθέσιμων ρυθμίσεων Κάθε κατηγορία εξαρτάται πλήρως από τη συσκευή και την κατασκευή λογισμικού, αλλά αυτή η συζήτηση αφορά μια άλλη χρόνος. Σε κάθε περίπτωση, θα συνεχίσουμε να σας δείξουμε πώς να χρησιμοποιείτε τα AutoTools για τον έλεγχο της ασφαλούς κατάστασης έντασης.


Απενεργοποίηση προειδοποίησης ασφαλούς ήχου κατά την εκκίνηση

Ακολουθεί η περιγραφή του προφίλ για όσους από εσάς είναι εξοικειωμένοι με το Tasker. Εάν δεν είστε εξοικειωμένοι με το Tasker, διαβάστε παρακάτω για οδηγίες βήμα προς βήμα.

Απενεργοποιήστε τον ασφαλή ήχο κατά την εκκίνηση

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 ]

Διαβάστε περισσότερα

Ανοίξτε το Tasker για να δημιουργήσουμε ένα νέο προφίλ. Στην κάτω δεξιά γωνία πατήστε το + για να δημιουργήσετε ένα νέο προφίλ. Προσθέστε ένα νέο Εκδήλωση πλαίσιο και μεταβείτε στο Tasker --> Monitor Start. Χρησιμοποιούμε αυτό το πλαίσιο συμβάντος που ενεργοποιείται κατά την εκκίνηση του Tasker και όχι το πλαίσιο συμβάντος που ενεργοποιείται όταν εκκινείται το τηλέφωνο, επειδή το πρώτο είναι πολύ πιο αξιόπιστο από το δεύτερο.

Σε κάθε περίπτωση, πατήστε το κουμπί πίσω καθώς τώρα θα δημιουργήσουμε μια Εργασία που σχετίζεται με αυτό το προφίλ. Ονομάστε το Task οτιδήποτε, καθώς δεν έχει σημασία. Μόλις μπείτε στην οθόνη δημιουργίας εργασιών, πατήστε το + εικονίδιο στο κάτω μέρος της οθόνης για να δημιουργήσετε μια νέα ενέργεια. Για την πρώτη ενέργεια, μεταβείτε στο Εργασία --> Περιμένετε και να το περιμένει 30 δευτερόλεπτα. Αυτό αντιπροσωπεύει τον κανόνα "30 δευτερόλεπτα μετά την εκκίνηση" που χρησιμοποιείται στο Android για να ορίσετε την κατάσταση ασφαλούς έντασης.

Στη συνέχεια, δημιουργήστε μια νέα ενέργεια και μεταβείτε στο Πρόσθετο --> Αυτόματα Εργαλεία --> Ασφαλείς ρυθμίσεις. Πατήστε το μολύβι για να ανοίξετε την οθόνη διαμόρφωσης για τα AutoTools. Παω σε Προσαρμοσμένη ρύθμιση. Για τον Τύπο ρύθμισης εισάγετε Παγκόσμια. Για το όνομα εισάγετε audio_safe_volume_state. Για τον Τύπο εισόδου κάντε το ενθ. Για την αξία φτιάξτε το 2. Ελέγξτε για να βεβαιωθείτε ότι έχετε βάλει τα πάντα σωστά, η διαμόρφωση πρέπει να ταιριάζει με το μεσαίο στιγμιότυπο οθόνης παρακάτω. Η εντολή πρέπει να σταλεί ακριβώς όπως έγραψα ή δεν θα έχει καμία επίδραση.

Μόλις τελειώσετε, επιστρέψτε στο κύριο μενού του Tasker καθώς θα χρειαστεί να δημιουργήσουμε ένα άλλο προφίλ. Αυτό που μόλις δημιουργήσαμε αντιστοιχεί όταν η κατάσταση ασφαλούς έντασης έχει οριστεί 30 δευτερόλεπτα μετά την εκκίνηση, αλλά για Όσοι από εσάς δεν κάνετε σχεδόν ποτέ επανεκκίνηση της συσκευής σας, θα δημιουργήσουμε ένα άλλο προφίλ για να το ρυθμίζετε περιοδικά αξία.


Απενεργοποιήστε περιοδικά την προειδοποίηση ασφαλούς ήχου

Ακολουθεί η περιγραφή του προφίλ για όσους από εσάς είναι εξοικειωμένοι με το Tasker. Εάν δεν είστε εξοικειωμένοι με το Tasker, διαβάστε παρακάτω για οδηγίες βήμα προς βήμα.

Απενεργοποιήστε περιοδικά τον ασφαλή ήχο

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 ]

Διαβάστε περισσότερα

Δημιουργήστε ένα νέο προφίλ, αυτή τη φορά με ένα χρόνος συμφραζόμενα. Δυστυχώς δεν γνωρίζω καμία μέθοδο για να λάβω τον τρέχοντα αθροιστικό χρόνο αναπαραγωγής πολυμέσων χωρίς root, επομένως θα ρυθμίζουμε περιοδικά την κατάσταση ασφαλούς έντασης σε ανενεργή μία φορά κάθε 24 ώρες (... Δεν είναι σαν να ακούτε πραγματικά 20 ώρες μουσικής μέσα σε ένα 24ωρο, σωστά;). Εν πάση περιπτώσει, η διεπαφή του Tasker για τη ρύθμιση μιας περιοδικής εργασίας είναι κάπως τρομερή, αλλά η ουσία της είναι ότι θέλετε να ρυθμίσετε την ώρα "Από" και "Προς" στην ίδια ώρα. Με αυτόν τον τρόπο, το Tasker θα το μεταχειριστεί όπως θέλετε να ενεργοποιείται μόνο μία φορά τη συγκεκριμένη ώρα (το έφτιαξα 1 λεπτό πριν τα μεσάνυχτα).

Όσο για το Task, απλώς αντιγράψτε αυτό που κάνατε για την Ενέργεια #2 στο προηγούμενο προφίλ. Δεν υπάρχει νέα ή διαφορετική ενέργεια σε αυτήν την περίπτωση, καθώς το μόνο που κάνουμε είναι να αλλάζουμε την τιμή αυτής της ιδιότητας καθολικού συστήματος μία φορά κάθε 24 ώρες.

Τώρα που ρυθμίσατε και τα δύο αυτά προφίλ, τελειώσατε! Επανεκκινήστε το τηλέφωνό σας και δεν θα πρέπει πλέον να βλέπετε την προειδοποίηση "ασφαλούς έντασης" όταν συνδέετε τα ακουστικά σας.


Λήψη και εισαγωγή στο Tasker

Όπως πάντα, παρέχουμε το αρχείο XML των σεναρίων που μπορείτε να κατεβάσετε και να εισαγάγετε. Απλώς κατεβάστε τα αρχεία από τον παρακάτω σύνδεσμο και αποθηκεύστε τα οπουδήποτε στον εσωτερικό σας αποθηκευτικό χώρο. Ανοίξτε το Tasker και απενεργοποιήστε τη Λειτουργία αρχαρίου στις Προτιμήσεις. Στη συνέχεια, επιστρέψτε στην κύρια οθόνη και πατήστε παρατεταμένα την καρτέλα "Προφίλ" επάνω στην κορυφή. Θα πρέπει να δείτε ένα αναδυόμενο παράθυρο με μία από τις επιλογές "Εισαγωγή". Πατήστε σε αυτό και περιηγηθείτε στο σημείο όπου αποθηκεύσατε τα αρχεία .prf.xml και επιλέξτε αυτό το αρχείο για εισαγωγή. Επαναλάβετε για το δεύτερο προφίλ.

Κατεβάστε το προφίλ «Απενεργοποίηση ασφαλούς προειδοποίησης ήχου κατά την εκκίνηση».

Κατεβάστε το προφίλ "Απενεργοποίηση ασφαλούς ακουστικής προειδοποίησης περιοδικά".

Ελπίζουμε να σας φανεί χρήσιμη αυτή η συμβουλή. Ενημερώστε μας στα σχόλια παρακάτω εάν αυτό λειτουργεί για εσάς!