제작 뒷이야기
루팅 없이 Android 앱별 볼륨이 작동하는 방법
llcloud 팀 4분 분량
빠른 답변
Android는 미디어, 벨소리, 알람처럼 소리의 종류별로 볼륨을 정해서, 미디어를 재생하는 모든 앱이 슬라이더 하나를 나눠 써요. AppVolume은 앱의 재생에 오디오 효과를 붙이고 그 게인을 올리거나 내려서 앱마다 자기 음량을 줘요. 어떤 앱이 재생 중인지 알려면 개발자 권한이 하나 필요한데, AppVolume은 무선 디버깅과 여섯 자리 페어링 코드로 한 번에 받아요. 루팅도, 컴퓨터도, 접근성 서비스도 필요 없어요.
게임 소리를 줄이면 팟캐스트도 같이 줄어요. 길 안내를 키우면 음악도 덩달아 커져요. Android에서 두 가지를 동시에 재생해 본 사람이라면 누구나 언젠가 마주치는 일이에요. 저희는 이 문제를 풀려고 AppVolume을 만들었고, 작동 방식은 Android가 소리를 다루는 방식에 대해 많은 것을 알려 줘요. 쉬운 말로 풀어 볼게요.
Android에는 왜 미디어 볼륨이 하나뿐인가요?
Android는 앱별로 볼륨을 정하지 않아요. 소리의 종류별로 정하는데, Android는 이것을 스트림이라고 불러요. 미디어가 스트림 하나이고, 벨소리, 알람, 알림, 통화는 각자 따로 있어요. 무언가 재생되는 동안 볼륨 키를 누르면 미디어 스트림이 움직이고, 음악, 동영상, 게임, 팟캐스트를 재생하는 모든 앱이 그것을 나눠 써요.
이 설계 덕분에 단순해요. 볼륨 키는 늘 예측 가능하게 작동하고, 게임이 스스로 소리를 줄였다고 알람이 무음이 되는 일도 없어요. 대신 미디어를 재생하는 두 앱은 저절로 다른 크기가 될 수 없어요. 앱마다 다른 볼륨 설정하기 가이드는 휴대폰이 기본으로 주는 것을 정리하는데, 대부분의 휴대폰에서는 아무것도 없어요.
다른 앱별 볼륨 앱은 어떻게 작동하나요?
많은 볼륨 앱은 어떤 앱이 앞에 있는지 보다가, 바뀔 때 하나뿐인 미디어 볼륨을 바꿔요. 게임을 열면 미디어 볼륨이 내려가고, 팟캐스트 앱으로 돌아가면 다시 올라가요. 한 번에 앱 하나만 쓴다면 이런 방식도 통하지만 여전히 슬라이더는 하나예요. 내비게이션 아래에서 음악이 나오는 것처럼 두 앱이 함께 재생되면 항상 같은 크기를 나눠 써요.
이런 앱 중에는 화면에 어떤 앱이 있는지 보거나 볼륨 키를 가로채려고 접근성 서비스가 필요한 것도 있어요. 이렇게 작은 일에 쓰기에는 강력한 권한이에요.
AppVolume은 어떻게 앱마다 자기 음량을 줄까요?
Android에는 이퀄라이저나 다이내믹스 프로세서 같은 오디오 효과가 있고, 앱이 재생 하나하나에 붙일 수 있어요. 이 하나하나를 오디오 세션이라고 불러요. 그중 하나는 통과하는 소리의 게인을 올리거나 내릴 수 있어요. AppVolume은 음량을 정해 둔 앱의 세션마다 그 효과를 붙이고, 슬라이더 값으로 게인을 정해요.
그래서 변화는 그 앱의 소리에만 일어나고, 소리가 스피커에 닿기 전에 적용돼요. 팟캐스트 80%와 게임 20%가 정말로 동시에 그 크기로 재생돼요. 같은 효과가 Pro에서 작은 소리의 앱을 최대 200%까지 키우고 좌우 균형을 옮기는 방법이기도 해요.
AppVolume은 내 오디오를 듣거나 녹음하거나 보내지 않아요. 화면이나 볼륨 키를 지켜보지도 않고, 접근성 서비스도 없어요. 하는 일은 음량을 올리거나 내리는 것뿐이에요.
설정에 무선 디버깅과 페어링 코드가 필요한 이유는 무엇인가요?
효과를 붙이려면 AppVolume이 먼저 어떤 세션이 있고 각각 어느 앱의 것인지 알아야 해요. 시스템 오디오 서비스가 그 목록을 담은 상태 보고서를 갖고 있는데, Android는 개발자용 권한이 있는 앱만 읽게 해요. 이 권한은 앱이 보통 방식으로 요청할 수 없어요. 컴퓨터가 디버깅 케이블로 얻는 것과 같은 수준인 휴대폰의 셸, 또는 루트만 줄 수 있어요.
무선 디버깅은 컴퓨터 없이 그 셸 권한을 줘요. 설정할 때 무선 디버깅을 켜면 Android가 여섯 자리 페어링 코드를 보여 줘요. 그 코드를 AppVolume에 입력하면, AppVolume은 자기가 실행되는 바로 그 휴대폰과 페어링하고 명령 하나로 그 권한 하나를 스스로에게 줘요. 설정은 그게 전부예요. 그 뒤로 계속 실행되는 도우미는 없어요.
권한은 재부팅과 앱 업데이트 뒤에도 유지돼서 무선 디버깅과 개발자 옵션을 다시 꺼도 돼요. 이미 Shizuku를 쓰거나 루팅한 휴대폰이라면 AppVolume이 그것을 대신 쓸 수 있어요. 비슷한 페어링을 Repel에서는 다른 일에 쓰는데, Repel의 방화벽이 VPN 자리를 차지하지 않고 작동하는 방법에서 설명해요.
슬라이더 뒤에서는 무슨 일이 일어나나요?
다른 앱의 소리를 건드리는 믹서는 조심해야 해요. 실수하면 소리가 크게 나니까요. 그래서 AppVolume은 몇 가지 규칙을 따라요.
- 알 수 없음은 무음이 아니에요. 상태 보고서를 읽을 수 없으면 AppVolume은 아무것도 바꾸지 않아요. 이를 “재생 중인 것 없음”으로 읽으면 모든 효과가 풀려서 모든 앱이 한꺼번에 최대 음량으로 돌아가요.
- 사라지려면 두 번 사라져야 해요. 세션이 연속으로 두 번 읽기에서 보이지 않아야 효과를 놓아 줘서, 잠깐의 공백으로 음량이 튀지 않아요.
- 정한 음량을 기억해요. 앱을 한 번 설정해 두면, 재생하기 전이라도 그 앱이 시작될 때마다 그 음량이 적용돼요.
- 환불해도 갇히지 않아요. 이미 음량이 정해진 앱은 언제든 다시 키울 수 있어요.
솔직한 한계는 무엇인가요?
오디오 효과를 통한 앱별 볼륨은 소리를 내는 대부분의 앱에서 작동하지만 전부는 아니에요.
- 조절할 수 없는 앱이 있어요. 저지연 오디오를 쓰는 일부 게임처럼, Android가 어떤 효과도 닿지 못하게 하는 경로로 소리를 내는 앱이 있어요. AppVolume은 약 1분 30초 동안 여러 번 시도한 뒤 결정하고, 아무 일도 하지 않는 슬라이더를 두는 대신 알려 주고 그 앱에 표시해요.
- 잠깐 최대 음량이 나올 수 있어요. 앱이 재생을 시작할 때 효과가 붙기 전에 소리가 먼저 나올 수 있어요.
- 이퀄라이저 앱이 가로챌 수 있어요. 이퀄라이저 앱을 쓰면 같은 오디오를 가져가서 둘이 서로 방해할 수 있어요.
- 효과는 앱이 놓을 때까지 남아요. 앱이 재생 중일 때 AppVolume을 삭제하면 그 앱은 오디오를 놓을 때까지 설정한 음량을 유지해요. 설정에는 먼저 모든 앱을 최대 음량으로 되돌리는 버튼이 있어요.
- 시스템 보고서 하나에 의존해요. 앞으로 어떤 Android 버전이 앱이 그것을 읽지 못하게 하면 믹서는 무엇이 재생 중인지 볼 수 없게 돼요. AppVolume은 그런 경우에 짐작하지 않고 아무것도 바꾸지 않도록 만들었어요.
나에게 맞는 앱별 볼륨 앱은 무엇일까요?
한 앱을 쓰는 동안 그 앱만 조용하게 하고 싶다면 포그라운드 전환 방식으로도 충분할 수 있어요. 두 앱을 서로 다른 크기로 함께 재생하고 싶다면 앱마다 자기 소리를 바꾸는 것이 필요해요. AppVolume vs Precise Volume은 두 가지 접근을 비교하고, 삼성 사용자는 삼성이 자체 방법을 제공하니 AppVolume vs Samsung Sound Assistant를 읽어 보세요. 무엇을 고르든 AppVolume에는 광고도 계정도 없고, 그 이유는 우리 앱에 광고가 없는 이유에 있어요.
출처
질문
Android에는 왜 앱별 볼륨이 없나요?
Android는 소리를 어떤 앱이 내느냐가 아니라 무엇을 위한 소리냐로 나눠요. 미디어, 벨소리, 알람, 알림, 통화가 각각 볼륨을 갖고, 미디어를 재생하는 모든 앱이 미디어 볼륨 하나를 나눠 써요. 덕분에 볼륨 키가 단순하지만, 앱이 나서지 않으면 게임과 팟캐스트는 늘 같은 크기로 재생돼요.
루팅 없이 앱마다 볼륨을 조절할 수 있나요?
네. AppVolume은 루팅도 컴퓨터도 필요 없어요. 휴대폰의 개발자 도구만 줄 수 있는 권한이 하나 필요하고, 휴대폰에서 받는 과정을 안내해 드려요. 무선 디버깅을 켜고 여섯 자리 페어링 코드를 입력하면 끝이에요. 권한은 재부팅과 업데이트 뒤에도 유지되고, 이미 Shizuku나 루트를 쓴다면 그것도 돼요.
AppVolume은 왜 무선 디버깅이 필요한가요?
어떤 앱이 어떤 소리를 내는지 보려면 AppVolume이 시스템 오디오 서비스의 상태 보고서를 읽어야 하는데, Android는 개발자 권한이 있는 앱만 읽게 해요. 이 권한은 휴대폰의 셸만 줄 수 있어요. 무선 디버깅은 휴대폰이 AppVolume에게 휴대폰 안에서 한 번 셸 권한을 주는 방법이에요. 설정이 끝나면 다시 꺼도 돼요.
앱별 볼륨은 모든 앱에서 작동하나요?
모든 앱은 아니에요. 저지연 오디오를 쓰는 일부 게임처럼 Android가 조절을 허용하지 않는 경로로 소리를 내는 앱이 있어요. AppVolume은 아무 일도 하지 않는 슬라이더를 두는 대신 조절할 수 없는 앱이라고 알려 줘요. 또 설정이 적용되기 전 아주 짧은 순간은 앱이 평소 음량으로 재생될 수 있어요.