루트 없이 높은 볼륨 경고를 자동으로 비활성화하는 방법

click fraud protection

EU에서 판매되는 장치에 요구되는 높은 볼륨 또는 안전 오디오 경고를 비활성화하는 방법에 대한 튜토리얼입니다. 이는 루트가 없는 모든 장치에서 작동합니다.

유럽 ​​연합 회원국에 거주하는 분들은 헤드폰의 볼륨을 높이려고 할 때 위의 특집 이미지와 같이 경고 메시지를 접한 적이 있을 것입니다.

유럽전기기술표준화위원회(CENELEC)가 정한 규정에 따르면 모든 전자 2013년 2월 이후에 판매된 미디어 재생 기능이 있는 장치는 기본 출력 볼륨 레벨이 최대 85여야 합니다. dB. 사용자는 경고를 무시하여 볼륨을 최대 100dB까지 높일 수 있지만 그렇게 하면 음악 재생 20시간 후에 경고가 다시 나타나야 합니다.

우리는 선의를 증진하는 데 있어 이 규정의 효율성에 대해 논쟁을 벌이지는 않을 것입니다. 건강상의 문제로 인해 이 경고를 자주 우회하는 사용자는 이 프로세스가 가능한지 궁금해합니다. 자동화. 시작할 때와 같이 볼륨 제한을 무시하는 데 수동으로 동의해야 하는 것이 다소 성가신 경우가 많습니다. Bluetooth 장치에서 원격으로 음악을 재생할 수 있으므로 이를 자동으로 우회하는 방법을 찾고 싶었습니다. 경고.

포럼을 검색하면 "안전한 볼륨 제한"을 우회하는 솔루션이 이미 존재하지만 지금까지 모든 솔루션을 사용하려면 다음을 수행해야 합니다. 설치하다 노출된 기준 치수. Xposed Framework를 사용하려면 루트 액세스 권한(대부분의 휴대폰에서 잠금 해제된 부트로더를 의미)이 필요하고 Android Nougat 이전 버전을 사용해야 하므로 이를 사용할 수 있는 사람이 반드시 제한됩니다. 하지만 AOSP와 다양한 시스템 설정을 살펴본 후 높은 볼륨/안전 오디오 제한을 우회하는 방법을 발견했습니다. 루트가 필요 없이 모든 장치에서.

이 가이드를 따르면 높은 볼륨 레벨에서 미디어를 듣는 것과 관련된 모든 위험을 감수하게 됩니다.


안전한 오디오 경고 우회 튜토리얼

제가 이전에 쓴 글을 읽어보셨다면 루트 액세스 없이 몰입형 모드 활성화, 그러면 휴대폰에 숨겨진 일부 설정을 가지고 놀기 시작했을 수도 있습니다. 아직 해보지 않으셨다면 해보시길 적극 권장합니다. 거의 모든 장치에는 발견되기를 기다리는 수많은 유용한 기능이 있다는 것을 알았기 때문입니다. 안전한 오디오 경고를 우회하기 위해 시스템 속성을 사용할 것이기 때문에 이 트릭은 다르지 않습니다.

구체적으로는 시스템을 수정할 예정입니다. 전역 속성 audio_safe_volume_state 부팅 시와 주기적으로 모두 수행되므로 Android는 항상 사용자가 경고를 우회하는 데 동의했다고 생각합니다. 이 속성은 AOSP에 정의됨, 아래에서 재현하고 있습니다. 이 속성은 0~3 범위의 여러 상태를 가질 수 있습니다. 부팅 후 30초 또는 연속 음악 재생 20시간마다 상태가 '0' 또는 '구성되지 않음'으로 설정됩니다. 그런 다음 사용자에 따라 '비활성화'인 경우 '1'로 설정되고 '활성화된' 경우 '3'으로 설정됩니다. 모바일 국가 코드. EU에 거주하는 경우 이 속성은 기본적으로 '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 AutoTools에 대한 권한입니다. 안전한 오디오 볼륨 상태를 제어하는 ​​명령이 아래에 정의되어 있기 때문입니다. 설정. 글로벌 클래스이지만 명령의 정확한 구문은 AOSP에 숨겨져 있습니다(몰입형 모드와 마찬가지로). 몰입형 모드에 대한 이전 튜토리얼을 읽은 후 AutoTools에 WRITE_SECURE_SETTINGS 권한을 이미 부여한 경우 다음 섹션을 건너뛸 수 있습니다. 그렇지 않은 경우 설정해야 합니다.


Android의 권한 관리 시스템에서 애플리케이션은 매니페스트 파일에 부여하려는 권한을 정의합니다. 그런 다음 사용자는 설치(Marshmallow 이전) 또는 요청 시(Marshmallow+) 권한을 부여하거나 거부할 수 있습니다. 그러나 애플리케이션이 매니페스트에서 요청하더라도 부여할 수 없는 특정 권한이 있습니다. WRITE_SECURE_SETTINGS. 이는 모든 애플리케이션에 강력한 권한을 부여하면 해당 앱이 기기에 대한 엄청난 제어권을 갖게 되기 때문입니다.

하지만 원하는 모든 앱에 WRITE_SECURE_SETTINGS 권한을 부여하는 데 사용할 수 있는 해결 방법이 하나 있습니다. ADB를 사용하여 패키지 관리자(오후) 도구를 사용하면 원하는 애플리케이션에 모든 권한을 부여할 수 있습니다(애플리케이션이 매니페스트 파일에서 해당 권한을 요청하는 경우).

가장 먼저 해야 할 일은 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가 시작될 때 트리거되는 이 이벤트 컨텍스트를 사용하고 있습니다.

어쨌든 이제 이 프로필과 관련된 작업을 생성할 것이므로 뒤로 버튼을 누르십시오. 중요하지 않으므로 작업 이름을 무엇이든 지정하세요. 작업 생성 화면에 들어가면 + 새로운 액션을 생성하려면 화면 하단 중앙에 있는 아이콘을 클릭하세요. 첫 번째 작업은 다음으로 이동하세요. 작업 --> 대기 그리고 기다리게 해라 30 초. 이는 안전한 볼륨 상태를 설정하기 위해 Android에서 사용되는 "부팅 후 30초" 규칙을 설명합니다.

다음으로 새 작업을 만들고 다음으로 이동합니다. 플러그인 --> AutoTools --> 보안 설정. 연필을 눌러 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 ]

더 읽어보세요

이번에는 새 프로필을 만듭니다. 시간 문맥. 불행히도 나는 미디어 재생의 현재 누적 시간을 얻는 방법을 알지 못합니다. 루트이므로 대신 24시간마다 주기적으로 안전한 볼륨 상태를 비활성으로 설정하겠습니다(... 여러분이 실제로 24시간 안에 20시간 동안 음악을 듣는 것과는 다르죠?). 어쨌든, 주기적인 작업을 설정하는 Tasker의 인터페이스는 좀 형편없지만, 그 요점은 "시작" 시간과 "끝" 시간을 동시에 설정하고 싶다는 것입니다. 이렇게 하면 Tasker는 태스크가 설정된 시간에 한 번만 실행되기를 원하는 것처럼 처리합니다(저는 자정 1분 전에 실행했습니다).

작업의 경우 이전 프로필에서 작업 #2에 대해 수행한 작업을 복사하면 됩니다. 이 경우 새 작업이나 다른 작업은 없습니다. 우리가 하는 작업은 24시간마다 한 번씩 이 전역 시스템 속성의 값을 변경하는 것뿐입니다.

이제 두 프로필을 모두 설정했으므로 완료되었습니다! 휴대전화를 재부팅하세요. 이제 헤드폰을 연결할 때 "안전한 볼륨" 경고가 더 이상 표시되지 않습니다.


Tasker로 다운로드 및 가져오기

늘 그렇듯, 다운로드하고 가져올 수 있는 스크립트의 XML 파일을 제공하고 있습니다. 아래 링크에서 파일을 다운로드하고 내부 저장소에 저장하세요. Tasker를 열고 기본 설정에서 초보자 모드를 비활성화하세요. 그런 다음 메인 화면으로 돌아가서 상단의 “프로필” 탭을 길게 누르세요. "가져오기" 옵션 중 하나가 포함된 팝업이 표시됩니다. 이를 누르고 .prf.xml 파일을 저장한 위치를 찾아 가져올 파일을 선택합니다. 두 번째 프로필에 대해 반복합니다.

'부팅 시 안전한 오디오 경고 비활성화' 프로필 다운로드

'안전한 오디오 경고를 주기적으로 비활성화' 프로필 다운로드

이 팁이 도움이 되길 바랍니다. 이 방법이 귀하에게 도움이 된다면 아래 댓글로 알려주세요!