كيفية تعطيل التحذير من ارتفاع مستوى الصوت تلقائيًا دون الحاجة إلى الجذر

برنامج تعليمي حول كيفية تعطيل تحذير الصوت العالي أو الصوت الآمن المطلوب على الأجهزة المباعة في الاتحاد الأوروبي. يعمل هذا على جميع الأجهزة بدون روت.

من المحتمل أن يكون أولئك الذين يعيشون في إحدى الدول الأعضاء في الاتحاد الأوروبي قد صادفوا التحذير عند محاولة رفع مستوى صوت سماعة الرأس الخاصة بك كما هو موضح في الصورة المميزة أعلاه.

وفقًا للوائح التي وضعتها اللجنة الأوروبية للمعايير الكهروتقنية (CENELEC)، جميعها إلكترونية يجب أن يكون للأجهزة القادرة على تشغيل الوسائط المباعة بعد فبراير 2013 مستوى صوت افتراضي يبلغ 85 كحد أقصى ديسيبل. يمكن للمستخدمين اختيار تجاوز التحذير لزيادة مستوى الصوت إلى حد أقصى قدره 100 ديسيبل، ولكن عند القيام بذلك، يجب أن يظهر التحذير مرة أخرى بعد 20 ساعة من تشغيل الموسيقى.

بينما لن ندخل في نقاش حول مدى فعالية هذه اللائحة في تعزيز الخير الصحة، غالبًا ما يتساءل المستخدمون الذين يختارون تجاوز هذا التحذير بشكل متكرر عما إذا كان من الممكن القيام بهذه العملية الآلي. هناك العديد من الحالات التي يكون من المزعج فيها الموافقة يدويًا على تجاوز حد الحجم، كما هو الحال عند البدء تشغيل الموسيقى عن بعد على جهاز بلوتوث، لذلك أردنا أن نبدأ في اكتشاف طريقة لتجاوز هذا تلقائيًا تحذير.

الحلول لتجاوز "حد الحجم الآمن" موجودة بالفعل إذا كنت تبحث في منتدياتنا، ولكن حتى الآن جميع الحلول تطلبت منك ثَبَّتَ اكسبوزد وحدة. وهذا يحد بالضرورة من يمكنه استخدامه، حيث يتطلب Xpose Framework منك الوصول إلى الجذر (مما يعني أداة تحميل التشغيل غير المؤمّنة على معظم الهواتف) بالإضافة إلى التواجد على إصدارات ما قبل Nougat من Android. ولكن بعد البحث في AOSP وإعدادات النظام المختلفة، اكتشفت طريقة لتجاوز حد الصوت العالي/الصوت الآمن على جميع الأجهزة دون الحاجة إلى الجذر.

باتباع هذا الدليل، فإنك تقبل أي مخاطر تتعلق بالاستماع إلى الوسائط بمستويات صوت عالية.


البرنامج التعليمي الآمن لتحذير تجاوز الصوت

إذا كنت قد قرأت مقالتي السابقة على تمكين الوضع الشامل دون الوصول إلى الجذر، فربما تكون قد بدأت في تجربة بعض الإعدادات التي يمكنك العثور عليها مخفية على هاتفك. إذا لم تقم بذلك، فإنني أوصيك بشدة أن تفعل ذلك، حيث وجدت أن كل جهاز تقريبًا يحتوي على الكثير من الأشياء الجيدة التي تنتظر من يكتشفها. لا تختلف هذه الخدعة لأننا سنستخدم إحدى خصائص النظام لتجاوز التحذير الصوتي الآمن.

على وجه التحديد، سنقوم بتعديل النظام. الملكية العالمية audio_safe_volume_state سواء أثناء التمهيد أو بشكل دوري، لذلك سيعتقد Android دائمًا أنك وافقت على تجاوز التحذير. هذه الخاصية المحددة في AOSP، والتي نعيد إنتاجها أدناه. هناك عدة حالات يمكن أن تتخذها هذه الخاصية، تتراوح من 0 إلى 3. بعد 30 ثانية من التمهيد أو بعد كل 20 ساعة من التشغيل المستمر للموسيقى، يتم ضبط الحالة على "0" أو "غير مكوّن". ثم يتم ضبطه على "1" لـ "معطل" أو "3" لـ "ممكّن" اعتمادًا على جهازك رمز البلد المحمول. إذا كنت تعيش في الاتحاد الأوروبي، فسيتم تعيين هذه الخاصية على "3" بشكل افتراضي ولكن يتم تغييرها إلى "2" لـ "غير نشط" عندما يتجاوز المستخدم تحذير مستوى الصوت يدويًا. سنقوم بتغيير قيمة هذه الخاصية إلى الحالة "غير النشطة". (تغييره إلى "معطل" لم ينجح معي أبدًا، في حال كنت تتساءل).


//
// 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، لكنني على دراية بـ Tasker فقط، لذا سيتعين عليك إجراء التعديلات بنفسك إذا كنت تفضل استخدام تطبيق مختلف. ومع ذلك، تعد AutoTools أمرًا بالغ الأهمية لهذه الخدعة لأن هذا المكون الإضافي سيسمح لنا بالتحكم في الإعدادات الآمنة على أجهزتنا.

كما هو موضح في مقالتي حول تبديل الوضع الشامل، نحتاج إلى منح WRITE_SECURE_SETTINGS إذن لأدوات السيارات. وذلك لأن الأمر الخاص بالتحكم في حالة مستوى الصوت الآمن محدد ضمن ملف إعدادات. عالمي فئة، على الرغم من أن بناء الجملة الدقيق للأمر مخفي في AOSP (تمامًا كما كان الحال في الوضع الشامل). إذا كنت قد منحت بالفعل إذن WRITE_SECURE_SETTINGS لـ AutoTools بعد قراءة البرنامج التعليمي السابق الخاص بي حول الوضع الشامل، فيمكنك تخطي القسم التالي. إذا لم يكن الأمر كذلك، فسيتعين عليك إعداده.


ضمن نظام إدارة الأذونات في Android، تحدد التطبيقات الأذونات التي تريد منحها في ملف البيان. يمكن للمستخدمين بعد ذلك منح أو رفض الأذونات عند التثبيت (ما قبل Marshmallow) أو عند الطلب (Marshmallow+). ومع ذلك، هناك أذونات معينة لا يمكن منحها للتطبيقات حتى لو طلبتها في البيان، مثل WRITE_SECURE_SETTINGS. وذلك لأن منح أي تطبيق إذنًا قويًا مثل هذا من شأنه أن يمنح هذا التطبيق قدرًا كبيرًا من التحكم في جهازك.

ولكن هناك حل بديل يمكننا استخدامه لمنح إذن WRITE_SECURE_SETTINGS لأي تطبيق نريده. باستخدام بنك التنمية الآسيوي مدير الحزم (مساء) يمكننا منح أي إذن لأي تطبيق نريده (بشرط أن يطلب التطبيق هذا الإذن في ملف البيان).

أول شيء عليك القيام به هو تثبيت ثنائي ADB على جهاز الكمبيوتر الخاص بك متبوعًا بـ برنامج التشغيل المناسب لجهازك. بعد ذلك، قم بتمكين تصحيح أخطاء USB في خيارات المطور (انتقل إلى الإعدادات -> حول الهاتف وانقر على رقم الإصدار 7 مرات إذا لم تكن قد فعلت ذلك بالفعل) وقم بتوصيل هاتفك بالكمبيوتر. أخيرًا، أرسل الأمر التالي بمجرد فتح الوحدة الطرفية:

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

سيكون لدى AutoTools الآن القدرة على تغيير أي إعداد عام أو آمن أو نظام على جهازك. هناك طرق مختلفة يمكنك من خلالها التعامل مع هذه الإعدادات وقائمة الإعدادات المتاحة فيها تعتمد كل فئة بشكل كامل على جهازك وإصدار البرنامج، ولكن هذه المناقشة مخصصة لفئة أخرى وقت. على أية حال، سننتقل لنوضح لك كيفية استخدام AutoTools للتحكم في حالة مستوى الصوت الآمن.


تعطيل التحذير الصوتي الآمن عند التمهيد

فيما يلي وصف الملف الشخصي لأولئك منكم الذين يعرفون تاسكر. إذا لم تكن على دراية ببرنامج 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 بدلاً من سياق الحدث الذي يتم تنشيطه عند تشغيل الهاتف لأن الأول أكثر موثوقية بكثير من الأخير.

على أية حال، اضغط على زر الرجوع حيث سنقوم الآن بإنشاء مهمة مرتبطة بهذا الملف الشخصي. قم بتسمية المهمة بأي شيء لأنه لا يهم. بمجرد الدخول إلى شاشة إنشاء المهمة، اضغط على + في الجزء السفلي الأوسط من الشاشة لإنشاء إجراء جديد. بالنسبة للإجراء الأول، انتقل إلى المهمة -> انتظر وانتظرها 30 ثانية. وهذا يمثل قاعدة "30 ثانية بعد التمهيد" المستخدمة في Android لتعيين حالة مستوى الصوت الآمن.

بعد ذلك، قم بإنشاء إجراء جديد وانتقل إلى البرنامج المساعد -> الأدوات التلقائية -> الإعدادات الآمنة. اضغط على القلم الرصاص لفتح شاشة التكوين لـ AutoTools. اذهب إلى الإعداد المخصص. أدخل نوع الإعداد عالمي. للاسم أدخل audio_safe_volume_state. بالنسبة لنوع الإدخال، قم بذلك كثافة العمليات. من أجل القيمة اصنعها 2. تحقق للتأكد من وضع كل شيء بشكل صحيح، يجب أن يتطابق التكوين مع لقطة الشاشة الوسطى أدناه. يجب إرسال الأمر بالضبط كما كتبت وإلا فإنه لن يكون له أي تأثير.

بمجرد الانتهاء، ارجع إلى القائمة الرئيسية لـ Tasker حيث سنحتاج إلى إنشاء ملف تعريف آخر. الحساب الذي أنشأنا حسابات له للتو عندما يتم تعيين حالة الحجم الآمن بعد 30 ثانية من التمهيد، ولكن لـ لأولئك منكم الذين لم يقوموا بإعادة تشغيل أجهزتهم تقريبًا، سنقوم بإنشاء ملف تعريف آخر لتعيين هذا بشكل دوري قيمة.


قم بتعطيل التحذير الصوتي الآمن بشكل دوري

فيما يلي وصف الملف الشخصي لأولئك منكم الذين يعرفون تاسكر. إذا لم تكن على دراية ببرنامج 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 ساعة، أليس كذلك؟). على أي حال، تعد واجهة تاسكر لإعداد مهمة دورية أمرًا فظيعًا نوعًا ما، ولكن جوهرها هو أنك تريد ضبط الوقت "من" و"إلى" في نفس الوقت. بهذه الطريقة، سيتعامل معها تاسكر كما لو كنت تريد تشغيل المهمة مرة واحدة فقط في وقت محدد (لقد قمت بذلك قبل دقيقة واحدة من منتصف الليل).

أما بالنسبة للمهمة، فما عليك سوى نسخ ما قمت به للإجراء رقم 2 في الملف الشخصي السابق. لا يوجد إجراء جديد أو مختلف في هذه الحالة، حيث أن كل ما نقوم به هو تغيير قيمة خاصية النظام العالمي هذه مرة كل 24 ساعة.

الآن وبعد أن قمت بإعداد هذين الملفين الشخصيين، فقد انتهيت! أعد تشغيل هاتفك ومن المفترض ألا ترى الآن تحذير "الحجم الآمن" عند توصيل سماعات الرأس.


تحميل واستيراد إلى تاسكر

كما هو الحال دائمًا، نقدم ملف XML للنصوص البرمجية والذي يمكنك تنزيله واستيراده. ما عليك سوى تنزيل الملفات من الرابط أدناه وحفظها في أي مكان على وحدة التخزين الداخلية لديك. افتح تاسكر وقم بتعطيل وضع المبتدئين في التفضيلات. ثم ارجع إلى الشاشة الرئيسية واضغط مطولاً على علامة التبويب "الملف الشخصي" في الأعلى. من المفترض أن تظهر لك نافذة منبثقة بها أحد الخيارات وهو "استيراد". اضغط على ذلك واستعرض للوصول إلى المكان الذي حفظت فيه ملفات .prf.xml وحدد هذا الملف لاستيراده. كرر الملف الشخصي الثاني.

قم بتنزيل ملف التعريف "تعطيل التحذير الصوتي الآمن عند التمهيد".

قم بتنزيل ملف التعريف "تعطيل التحذير الصوتي الآمن بشكل دوري".

نأمل أن تجد هذه النصيحة مفيدة. اسمحوا لنا أن نعرف في التعليقات أدناه إذا كان هذا يناسبك!