Како аутоматски онемогућити упозорење о великој јачини звука без роот-а

Водич о томе како да онемогућите упозорење о високој јачини звука или безбедном звуку које је потребно на уређајима који се продају у ЕУ. Ово ради на свим уређајима без роот-а.

Они од вас који живе у једној од земаља чланица Европске уније вероватно су наишли на упозорење када покушавају да повећају јачину звука у слушалицама као што је приказано на горњој слици.

Према прописима Европског комитета за електротехничку стандардизацију (ЦЕНЕЛЕЦ), сви електронски уређаји који могу да репродукују медије који се продају после фебруара 2013. морају имати подразумевани ниво излазне јачине од максимално 85 дБ. Корисници могу да изаберу да замене упозорење да повећају јачину звука на максимално 100 дБ, али при томе се упозорење мора поново појавити након 20 сати репродукције музике.

Иако нећемо улазити у дебату о ефикасности ове уредбе у промовисању доброг здравља, корисници који често бирају да заобиђу ово упозорење често се питају да ли овај процес може бити аутоматизовано. Постоје многи случајеви у којима је прилично неугодно морати ручно да пристанете да пређете преко ограничења јачине звука, на пример када почнете репродуковање музике на даљину на Блуетоотх уређају, па смо желели да смислимо начин да аутоматски заобиђемо ово упозорење.

Решења за заобилажење „ограничења безбедног волумена“ већ постоје ако претражујете наше форуме, али до сада су сва решења захтевала да инсталирај ан Кспосед Модул. Ово нужно ограничава ко може да га користи, пошто Кспосед Фрамеворк захтева од вас да имате роот приступ (што значи откључан покретачки програм на већини телефона), као и да користите верзије Андроид-а пре-Ноугат. Али након копања по АОСП-у и разним системским поставкама, открио сам начин да заобиђем ограничење високе јачине/безбедног звука на свим уређајима без потребе за роот-ом.

Пратећи овај водич, прихватате све ризике везане за слушање медија при високим нивоима јачине звука.


Водич за заобилажење безбедног аудио упозорења

Ако сте прочитали мој претходни чланак о омогућавање Иммерсиве Моде без роот приступа, онда сте можда почели да се поигравате са неким подешавањима која можете пронаћи скривеним на свом телефону. Ако нисте, топло вам препоручујем да то урадите, јер сам открио да скоро сваки уређај има гомилу добрих ствари које само чекају да буду откривене. Овај трик се не разликује јер ћемо користити системско својство да заобиђемо сигурно аудио упозорење.

Конкретно, ми ћемо модификовати систем. Глобална својина аудио_сафе_волуме_стате и при покретању и повремено, тако да ће Андроид увек мислити да сте пристали да заобиђете упозорење. Ова имовина је дефинисано у АОСП, који репродукујемо у наставку. Постоји неколико стања које ово својство може да има, у распону од 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

Опширније

Прво ћете морати да инсталирате Таскер и АутоТоолс тако да можемо аутоматизовати овај трик. Технички, може се користити било која друга апликација за аутоматизацију осим Таскера, али ја сам упознат само са Таскер-ом, тако да ћете морати сами да извршите подешавања ако више волите да користите другу апликацију. АутоТоолс је, међутим, кључан за овај трик јер ће нам овај додатак омогућити да контролишемо безбедне поставке на нашем уређају.

Као што је објашњено у мом чланку о укључивању имерзивног режима, морамо да одобримо ВРИТЕ_СЕЦУРЕ_СЕТТИНГС дозволу за АутоТоолс. То је зато што је команда за контролу безбедног стања јачине звука дефинисана под Подешавања. Глобал класе, иако је тачна синтакса за команду скривена у АОСП-у (баш као што је то било за имерзивни режим). Ако сте већ дали дозволу ВРИТЕ_СЕЦУРЕ_СЕТТИНГС за АутоТоолс након што сте прочитали мој претходни водич о Иммерсиве Моде, онда можете прескочити следећи одељак. Ако не, онда ћете морати да га подесите.


У оквиру Андроид система за управљање дозволама, апликације дефинишу дозволе које желе да им се додели у датотеци манифеста. Корисници тада могу да дају или одбију дозволе за инсталацију (пре Марсхмаллов) или на захтев (Марсхмаллов+). Међутим, постоје одређене дозволе да се пријаве не могу одобрити чак и ако то траже у Манифесту, као нпр ВРИТЕ_СЕЦУРЕ_СЕТТИНГС. То је зато што би давање било којој апликацији тако моћне дозволе дало тој апликацији велику контролу над вашим уређајем.

Али постоји једно решење које можемо да користимо да доделимо дозволу ВРИТЕ_СЕЦУРЕ_СЕТТИНГС било којој апликацији коју желимо. Коришћењем АДБ-а менаџер пакета (пм) алат, можемо дати било коју дозволу било којој апликацији коју желимо (под условом да апликација захтева ту дозволу у датотеци манифеста).

Прва ствар коју ћете морати да урадите је инсталирајте АДБ бинарни фајл на рачунар, а затим и прави драјвер за ваш уређај. Затим омогућите УСБ отклањање грешака у опцијама за програмере (идите на Подешавања --> О телефону и куцните на Број верзије 7 пута ако већ нисте) и повежите телефон са рачунаром. На крају, пошаљите следећу команду када отворите терминал:

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

Сада ће АутоТоолс имати могућност да промени било које глобално, безбедно или системско подешавање на вашем уређају. Постоје различити начини на које можете да се играте са овим подешавањима и листом доступних подешавања свака категорија у потпуности зависи од вашег уређаја и верзије софтвера, али та дискусија је за другу време. У сваком случају, наставићемо да вам покажемо како да користите АутоТоолс да контролишете стање безбедне јачине звука.


Онемогућавање безбедног аудио упозорења при покретању

Ево описа профила за оне од вас који су упознати са Таскером. Ако нисте упознати са Таскер-ом, прочитајте упутства корак по корак.

Онемогућите Сафе Аудио при покретању

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 ]

Опширније

Отворите Таскер да бисмо могли да направимо нови профил. У доњем десном углу додирните + икона за креирање новог профила. Додајте нови Догађај контекст и идите на Таскер --> Монитор Старт. Користимо овај контекст догађаја који се покреће када се Таскер покрене, а не контекст догађаја који се активира када се телефон покрене јер је први далеко поузданији од другог.

У сваком случају, притисните дугме за повратак јер ћемо сада креирати задатак повезан са овим профилом. Задатку назовите било шта јер није важно. Када уђете у екран за креирање задатка, притисните на + икону у доњем средини екрана да бисте креирали нову радњу. За прву акцију идите на Задатак --> Чекај и нека чека 30 секунди. Ово узима у обзир правило „30 секунди након покретања“ које се користи у Андроид-у за подешавање стања безбедне јачине звука.

Затим креирајте нову радњу и идите на Додатак --> АутоАлати --> Сигурносна подешавања. Притисните оловку да бисте отворили екран за конфигурацију за АутоТоолс. Иди на Прилагођена поставка. За тип подешавања унесите Глобал. За Име унесите аудио_сафе_волуме_стате. За тип уноса направите га инт. За вредност учините то 2. Проверите да ли сте све исправно поставили, конфигурација би требало да одговара средњем снимку екрана испод. Команда се мора послати баш тако као што сам написао или неће имати никаквог утицаја.

Када завршите, вратите се на главни мени програма Таскер јер ћемо морати да креирамо још један профил. Онај који смо управо креирали рачуна када је стање безбедне јачине звука подешено 30 секунди након покретања, али за они од вас који скоро никада не рестартују свој уређај, направићемо још један профил да бисмо то повремено подесили вредност.


Периодично онемогућите безбедно аудио упозорење

Ево описа профила за оне од вас који су упознати са Таскером. Ако нисте упознати са Таскер-ом, прочитајте упутства корак по корак.

Периодично онемогућите Сафе Аудио

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 ]

Опширније

Направите нови профил, овог пута са а време контекст. Нажалост, није ми познат ниједан метод да добијем тренутно кумулативно време репродукције медија без њега роот, па ћемо уместо тога само периодично постављати стање безбедне јачине звука на неактивно једном свака 24 сата (... није да ви момци заправо слушате 20 сати музике у периоду од 24 сата, зар не?). У сваком случају, Таскер-ов интерфејс за постављање периодичног задатка је некако ужасан, али суштина тога је да желите да подесите време „Од“ и „До“ на исто време. На овај начин, Таскер ће га третирати као да желите да се Задатак покрене само једном у одређено време (ја сам то направио 1 минут пре поноћи).

Што се тиче Задатка, само копирајте оно што сте урадили за Акцију #2 у претходном профилу. У овом случају нема нове или другачије радње, јер све што радимо је да мењамо вредност овог својства глобалног система једном у 24 сата.

Сада када сте подесили оба ова профила, готови сте! Поново покрените телефон и сада више не би требало да видите упозорење „безбедна јачина звука“ када укључите слушалице.


Преузмите и увезите у Таскер

Као и увек, пружамо КСМЛ датотеку скрипте коју можете да преузмете и увезете. Једноставно преузмите датотеке са доње везе и сачувајте их било где у интерној меморији. Отворите Таскер и онемогућите почетнички режим у подешавањима. Затим се вратите на главни екран и дуго притисните картицу „Профил“ на врху. Требало би да видите искачући прозор са једном од опција „Увези“. Додирните то и потражите где сте сачували .прф.кмл датотеке и изаберите ту датотеку за увоз. Поновите за други профил.

Преузмите профил „Онемогући безбедно аудио упозорење при покретању“.

Преузмите профил „Периодично онемогућавање безбедног аудио упозорења“.

Надамо се да ће вам овај савет бити користан. Обавестите нас у коментарима испод да ли ово ради за вас!