Repository navigation
v1.7.1 — v1.7.0 에서 진동 때 앱이 꺼지던 것과 잠금을 풀어도 남던 위협음 알림을 고쳤습니다
v1.7.0 에서 앱이 꺼지던 결함을 고친 버전입니다. v1.7.0 대신 이 버전을 쓰세요. v1.6.0 이나 v1.7.0 위에 지우지 않고 설치하면 됩니다. 서명 키가 같아 설정이 그대로 남습니다.
v1.7.1 에서 고친 것
- 진동이 울릴 때 앱이 꺼지던 결함(#383). v1.7.0 에서 설정의 진동 방식을 누르거나(미리 듣기), 튜토리얼의 진동 쪽을 열거나, 외부 사운드 모드에서 진동이 울리면 앱이 꺼졌습니다. 앱 안의 준비 순서가 어긋나 생긴 일로, v1.7.0 에만 있었습니다.
- 잠금을 풀어도 잠금 화면 위협음 알림이 남던 것(#385). 잠금을 풀면 사라져야 하는데, 직접 지우거나 5분이 지날 때까지 남았습니다. 앱이 잠금 풀림 신호를 받지 못하고 있었습니다. 이제 잠금을 풀면 바로 사라집니다.
v1.7.0 에서 바뀐 것
v1.6.0 에서 올라오면 아래 내용이 모두 함께 들어옵니다.
새로 생긴 것
분류 탭을 모두가 씁니다. 지금까지는 팀용 미리보기였던 분류 탭이 홈 · 설정 · 분류 · 도움말 순서로 모든 사람에게 보입니다. 여기서 고른 종류가 이제 실제로 화면 색, 진동, 잠금 화면 알림에 쓰입니다.
- AI 가 알아듣는 소리를 비슷한 것끼리 묶음(위협음 11개, 대화음 6개, 환경음 20개)으로 보여 주고, 묶음마다 환경음·대화음·위협음 가운데 무엇으로 볼지 고릅니다. 기본값을 고르면 원래대로 돌아갑니다.
- 소리를 하나씩 바꾸고 싶으면 고급 모드를 켭니다.
- 예를 들어 ‘초인종’ 묶음을 위협음으로 바꾸면, AI 가 초인종이나 노크 소리로 알아들을 때 위협음 색과 진동이 나옵니다. 다만 새로 위협음으로 정한 소리는 AI 가 종류를 가리는 데 한 표로 들어갈 뿐이라, 초인종이 울릴 때마다 반드시 알린다는 뜻은 아닙니다.
- 한 소리가 여러 이름으로 함께 들릴 때가 많습니다(사이렌은 ‘경보음’으로도 들립니다). 바꾼 뒤에도 예전 종류로 보이면 관련된 묶음도 함께 바꿔 주세요. 탭 안에도 이 안내가 있습니다.
잠금 화면 위협음 알림. 폰이 잠겨 있거나 화면이 꺼진 동안에는 그래픽이 잠금 화면에 가려 보이지 않습니다. 그때 위협음이 들리면 잠금 화면에 “위협음이 들렸습니다” 알림을 띄우고, 꺼진 화면을 잠깐 켭니다.
- 알림에는 위협음을 만든 소리의 이름(예: 사이렌)을 적습니다. 분류 탭에서 바꾼 종류를 따르고, 이름을 뚜렷하게 고를 수 없으면 이름 없이 알립니다.
- 알림은 소리 없이 뜹니다. 한 번 이어지는 위협음에 한 번만 알리고(다음 알림까지 30초 이상), 잠금을 풀면 사라집니다.
- 화면이 꺼져 있을 때는 외부 사운드 모드이거나, 배터리 설정의 화면이 꺼지면 일시정지를 끈 경우에만 알립니다.
- 위협음 표시를 꺼 두면 알리지 않습니다. 삼성 폰에서 잠금 화면 알림을 “아이콘만”으로 두었다면 폰 설정에서 내용을 보이게 바꿔야 글이 보입니다.
튜토리얼에서 진동을 느끼고 소리를 들을 수 있습니다.
- 진동 쪽에서 그림 속 폰이 떨 때 폰도 같은 박자로 실제로 진동합니다(처음 설정의 위협음 진동과 같은 박자).
- 그림 아래 소리 버튼을 누르면 그림이 그리는 소리를 새소리·대화·자동차 경적 같은 실제 녹음으로 함께 들려줍니다. 처음에는 꺼져 있고, 미디어 볼륨을 따릅니다.
- 시각화가 실행 중일 때는 튜토리얼의 진동과 소리가 나오지 않습니다. 실제 알림과 섞이지 않게 하려는 것입니다.
바뀐 동작
외부 사운드 모드의 진동
외부 사운드 모드에서 폰이 자기 진동 소리를 주변 소리로 착각해 진동이 멈추지 않던 문제를 여러 겹으로 막았습니다.
- 종류마다 고를 수 있는 가장 빠른 진동 방식이 정해졌습니다. 대화음은 ‘느림’까지, 위협음은 ‘중간’까지이고, 환경음은 이 모드에서 진동하지 않습니다(주변에 늘 있는 소리라 진동이 그치지 않기 때문입니다). 더 빠르게 정해 둔 종류는 정해진 가장 빠른 방식으로 울리고, 설정 화면에는 그 칸이 흐리게 보이며 까닭이 적힙니다. 외부 사운드 모드를 끄면 정해 둔 대로 울립니다. 저장해 둔 설정은 바뀌지 않습니다.
- 진동은 울림 사이의 쉬는 틈에서만 소리가 이어지는지 봅니다. 그래서 소리가 멈춘 뒤에도 잠시(보통 1초 안) 더 울릴 수 있습니다.
- 앱이 울린 진동은 소리 종류를 가리는 AI 가 듣는 소리에서 뺍니다. 진동하는 동안 AI 에는 그 직전의 주변 소리를 이어 들려줍니다. 그래서 앱의 진동이 화면 색을 바꾸거나, 대화음 진동을 스스로 이어 가거나, 잠금 화면 알림을 띄우지 않습니다. 폭발음처럼 큰 소리는 진동 중에도 그대로 듣습니다.
- 주변이 조용해져 AI 가 쉬면 진동도 1초쯤 뒤에 멈춥니다. AI 가 마지막으로 들은 종류로 계속 울리지 않게 하려는 것입니다. 잠금 화면 위협음 알림도 오래된 판정으로는 뜨지 않습니다. 조용하던 끝에 다시 소리가 나면 첫 진동이 0.3초쯤 늦을 수 있습니다.
마이크 감도는 숫자 없이 16칸입니다. 퍼센트(50~800%) 대신 슬라이더의 칸만 보이고, 맨 오른쪽이 최대(×32), 기본은 왼쪽에서 네 번째 칸입니다. 예전에 고른 값은 가장 가까운 칸으로 옮겨집니다(예전 최대 800% 는 열한 번째 칸). 화면 읽어주기는 “4/16”처럼 몇 번째 칸인지 읽습니다.
- 감도는 그래픽·진동·잠금 화면 알림이 보는 소리 크기에만 걸리고, AI 가 듣는 소리는 바꾸지 않습니다. 그래서 AI 가 듣지 못할 만큼 작은 소리는 감도를 올려도 진동하지 않습니다. 그럴 때는 폰을 소리 나는 곳 가까이에 두고 마이크를 가리지 마세요. 도움말과 설명서도 이 내용으로 고쳤습니다.
AI 분류(팀원 기여)
- 총소리 후보가 함께 있어도, 따로 들린 사이렌·폭발음 같은 위협 단서가 충분히 뚜렷하면(상위 후보 안에서 5% 이상) 위협음으로 봅니다. 예전에는 총소리 후보가 하나라도 있으면 이 경로가 막혔습니다.
- 분류 탭에서 사이렌을 다른 종류로 바꿔 두어도, 함께 들린 폭발음 같은 다른 위협 단서는 그대로 위협음으로 봅니다.
- 기본 종류가 바뀐 소리는 아래 ‘바뀐 기본값’에 모두 적었습니다.
홈과 설정 화면
- 언어 버튼이 홈 오른쪽 아래(지구본과 지금 언어 이름)로, 튜토리얼 보기가 왼쪽 아래로 옮겨졌습니다. 아랍어처럼 오른쪽에서 왼쪽으로 쓰는 언어에서는 좌우가 바뀝니다. 설정 탭 맨 위의 언어 카드는 없어졌습니다.
- 알림창에서 켜고 끄기(빠른 설정 타일) 카드는 설정 탭의 소리 분류와 배터리 사이로 옮겼습니다.
- 탭 화면과 튜토리얼은 쪽 너비의 10%만 옆으로 끌어도 다음 쪽으로 넘어갑니다. 빠르게 연달아 넘길 때 앞 쪽으로 되돌아가던 것도 고쳤습니다.
분류 탭 다듬기
- 대화음의 첫 묶음 이름을 **‘말소리·속삭임’**으로 새로 지었습니다. 여러 언어에서 구역 제목(대화음)과 같은 낱말이라 헷갈렸습니다. 웃음·고함 등이 대화음 묶음으로 옮겨 가면서 남은 묶음 이름도 **‘박수·콧노래·휘파람’**으로 바꿨습니다.
- 소리마다 종류가 다른 묶음을 바꿀 때, 하나씩 바꿔 둔 소리가 실제로 덮어써질 때만 한 번 묻습니다.
- 종류 거르기(예: 위협음만, 바꾼 소리만)를 켠 채 종류를 바꾸면, 그 카드가 바로 사라지지 않고 거르기나 찾는 말을 바꿀 때까지 그 자리에 남습니다.
- 바꾼 수 문구가 소리 수를 센다는 것이 드러나게 고쳤습니다(영어 “Sounds changed: N” 등).
- 거르기 버튼의 누르는 자리를 48dp 이상으로 넓혔습니다.
바뀐 기본값
아래 23개 소리의 기본 종류가 바뀌었습니다. 분류 탭에서 직접 바꿔 둔 소리는 그대로 내가 고른 종류를 따르고, 바꾸지 않은 소리만 새 기본값을 따릅니다. 예전으로 돌리고 싶으면 분류 탭에서 그 소리(또는 묶음)의 종류를 고르면 됩니다.
환경음 → 위협음 (주의를 끌어야 하는 경고음과 갑작스러운 소리, 9개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 후진 경고음 (Reversing beeps) | 환경음 | 위협음 |
| 기차 경적 (Train horn) | 환경음 | 위협음 |
| 기차 기적 소리 (Train whistle) | 환경음 | 위협음 |
| 안개 경적 (Foghorn) | 환경음 | 위협음 |
| 자전거 벨 (Bicycle bell) | 환경음 | 위협음 |
| 긴급 차량 (Emergency vehicle) | 환경음 | 위협음 |
| 차 미끄러지는 소리 (Skidding) | 환경음 | 위협음 |
| 타이어 끼익 소리 (Tire squeal) | 환경음 | 위협음 |
| 문 쾅 닫는 소리 (Slam) | 환경음 | 위협음 |
환경음 → 대화음 (사람이 내는 목소리, 11개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 우렁찬 고함 (Bellow) | 환경음 | 대화음 |
| 환호성 (Whoop) | 환경음 | 대화음 |
| 고함 (Yell) | 환경음 | 대화음 |
| 응원 함성 (Cheering) | 환경음 | 대화음 |
| 키득키득 웃음 (Giggle) | 환경음 | 대화음 |
| 비웃음 (Snicker) | 환경음 | 대화음 |
| 폭소 (Belly laugh) | 환경음 | 대화음 |
| 조용한 웃음 (Chuckle, chortle) | 환경음 | 대화음 |
| 아기 울음소리 (Baby cry, infant cry) | 환경음 | 대화음 |
| 흐느낌 (Whimper) | 환경음 | 대화음 |
| 신음 (Wail, moan) | 환경음 | 대화음 |
개가 낑낑거리는 소리(Whimper (dog))는 그대로 환경음입니다.
위협음 → 환경음 (총소리 대신으로 쓰던 임시 규칙을 없앰, 2개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 퐁당 소리 (Plop) | 위협음 | 환경음 |
| 가글하는 소리 (Gargling) | 위협음 | 환경음 |
대화음 → 환경음 (사람 목소리가 아니라 악기, 1개)
| 소리 | 이전 | 이후 |
|---|---|---|
| 싱잉볼 (Singing bowl) | 대화음 | 환경음 |
알아 두면 좋은 것:
- 아기 울음소리와 웃음·고함은 이제 대화음 색으로 보입니다. 대화음 진동은 처음에 꺼져 있으니, 진동으로 받고 싶으면 설정에서 대화음 진동을 켜 주세요.
- 외부 사운드 모드에서는 환경음이 진동하지 않으므로, 이번에 환경음이 된 소리(퐁당 소리, 가글하는 소리, 싱잉볼)는 이 모드에서 진동하지 않습니다.
고친 것
- 화면 읽어주기와 큰 글꼴에서 생기던 접근성 문제를 고쳤습니다.
- 큰 글꼴에서 권한 안내 창의 글이 잘리고 스크롤도 되지 않았습니다.
- 크기·반지름 슬라이더를 화면과 다른 숫자로 읽었습니다. 진동 제목과 세기 슬라이더는 이제 “위협음, 세기”처럼 어느 종류의 것인지 함께 읽습니다.
- 실행과 종료를 화면 읽어주기가 알려 주지 않았습니다.
- 설정의 구역 제목이 제목으로, 펼치는 카드의 머리가 버튼으로 읽히지 않았습니다.
- 도움말 목록에서 “•”와 번호를 따로 멈춰 읽었고, 안드로이드 12 이상 알림에서 고른 모드를 “선택됨”으로 두 번 읽었습니다.
- 큰 글꼴에서 진동 방식·표현 모드 칸의 이름이 글자 중간에서 끊겼습니다. 이제 칸을 여러 줄로 나눕니다.
- 글자 대비를 4.5:1 이상으로 올렸습니다(파란 버튼, 파란 글자, 빨간 종료 버튼). 탭 버튼, 진동 선택 칸, 소리 종류 표시 줄의 누르는 자리를 48dp 이상으로 넓혔습니다.
- 안드로이드 10 에서 ‘터치 진동’을 꺼 둔 폰은 느림·중간·빠름 진동과 미리보기가 울리지 않았습니다. 기본 위협음 진동(중간)도 해당했습니다.
- 튜토리얼에서 쪽을 넘길 때 그림이 빈 화면으로 툭 바뀌며 처음부터 다시 시작하던 것을 고쳤습니다. 이제 보이던 장면에서 그대로 이어 움직입니다.
- 잠금 화면 위협음 알림이 위협음을 만든 소리가 아닌 다른 소리 이름을 적거나 이름을 비우던 것을 고쳤습니다.
- 앱 안 라이선스 안내와 오픈소스 고지를 바로잡았습니다. 분류 탭의 소리 이름과 묶음은 AudioSet 온톨로지를 바탕으로 해 CC BY-SA 4.0 을 따릅니다.
- 도움말과 설명서를 실제 동작에 맞췄습니다(외부 사운드 모드의 진동 상한과 마이크 감도 조언, 위협음으로 끌어올리는 조건, 초인종을 진동으로 받으려면 분류 탭에서 바꿔야 한다는 것).
빨라진 것
- 오버레이가 화면 가장자리에서 그리는 영역을 정확히 재고, 화면 변마다 따로 재서 매 프레임 그리는 양을 줄였습니다. 보이는 그림은 같습니다.
- 분류 탭을 열 때마다 소리 이름 521개와 찾기 값을 다시 만들지 않습니다. 한 번 만든 것을 다시 씁니다. 앱을 켠 뒤 처음 열 때와 언어를 바꾼 뒤에는 잠깐 비어 보일 수 있습니다.
- 튜토리얼에서 쪽을 넘길 때 화면을 그리는 쪽에서 하던 무거운 계산을 뒤로 옮겼습니다.
알아 둘 점
- AI 분류는 참고용입니다. 안전이 걸린 상황에서 이 앱을 유일한 수단으로 쓰지 마세요.
- 외부 사운드 모드에서 다른 앱의 진동은 AI 가 듣는 소리에서 빼지 못합니다. 폰에 따라 앱의 진동 소리가 조금 남을 수 있고, 진동하는 동안에만 났다 끝난 작은 소리는 듣지 못합니다.
- 외부 사운드 모드에서 초인종은 기본으로 환경음이라 진동하지 않습니다. 진동으로 받으려면 분류 탭에서 ‘초인종’ 묶음을 위협음이나 대화음으로 바꿔 두세요. 바꿔도 모든 초인종 소리를 알리지는 못할 수 있습니다.
- 아기 울음소리·환호처럼 이번에 대화음이 된 소리가 경보음과 섞여 들리면, 위협음으로 끌어올려지지 않을 수 있습니다.
- 외부 사운드 모드에서는 방향을 아직 가운데로만 그립니다.
- ‘연속’ 진동이 다른 앱의 진동에 끊기면 다시 이어지기까지 최대 30초 걸릴 수 있습니다(폰 안의 소리 모드).
- 새로 지은 묶음 이름의 번역은 아직 원어민 검토를 받지 않았습니다. 어색한 표현이 있으면 알려 주세요.
확인한 것
- 배포한 코드(main
cfe77c2와 같은 내용인d392e4c)에서 유닛 테스트 737개가 통과했고, Lint 는 기존 경고 1건(의존성 새 버전 안내)뿐입니다. - 에뮬레이터 계측 테스트 79개
- 안드로이드 17(Pixel 7): 보통 화면과 작은 화면(320×640) 모두 통과
- 안드로이드 10: 보통 화면과 작은 화면 모두 통과
- 진동 때 꺼지던 결함(#383)
- 고치기 전 코드에서 실패하는 테스트를 넣었고, 고친 뒤 통과합니다.
- Galaxy S25+(안드로이드 16)에 같은 코드의 release 빌드를 깔아 확인했습니다. 설정의 진동 미리 듣기, 튜토리얼의 진동 쪽, 외부 사운드 모드에서 2분 동안 여러 번 울린 진동 모두에서 앱이 꺼지지 않았습니다.
- 잠금 알림(#385): 외부 사운드 모드로 실행한 채 잠갔다 풀어, 앱이 잠금 풀림 신호를 받는 것을 확인했습니다. 안드로이드 17 과 10 에뮬레이터, Galaxy S25+ 에서 봤고, 고치기 전에는 받지 못했습니다.
- 올라온 APK: 버전 1.7.1(12), targetSdk 37, arm64-v8a. v1.6.0·v1.7.0 과 같은 서명 키(SHA-256
f6a88fab…)라 지우지 않고 위에 설치하면 됩니다. R8 유지 규칙 13개가 그대로 있고 네이티브 함수 6개가 들어 있습니다. APK SHA-256b8758438f7eb08fe857fcdc24546968bbcfa920e6e4de5804a080acecc17131e.
확인하지 못한 것
- 외부 사운드 모드에서 진동이 울리는 것은 폰에서 봤습니다. 하지만 앱 진동을 AI 입력에서 빼는 것(#352)과 진동이 스스로 이어지지 않는 것(#290)은 일부러 시험하지 않았고, 시뮬레이션과 에뮬레이터로만 확인했습니다.
- 잠금 화면 위협음 알림이 떴다가 잠금을 풀면 사라지는 전체 흐름은 보지 못했습니다. 알림을 띄우려면 실제 위협음 소리를 내야 하기 때문입니다. 앱이 잠금 풀림 신호를 받는 데까지 확인했습니다.
- Galaxy S21 Ultra, S22(안드로이드 12)에서의 동작.
- 분류 탭의 속도 개선은 에뮬레이터에서만 쟀습니다.
- AI 정확도 숫자는 사람 발성 11개를 대화음으로 바꾼 뒤(#369) 다시 재지 않아 넣지 않았습니다.