Tosencen/XMSLEEP
Tosencen/XMSLEEP has 1,421 GitHub stars and 79 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-07 06:23 UTC. Last push 2026-10-13.
一款白噪音应用送给你,祝您牛掰,有的是钱
측정된 스타 증가
- in 24h
- 0
- in 7 days
- 기록 수집 중
- in 15 days
- 기록 수집 중
- in 1 month
- 기록 수집 중
서로 겹치는 기간의 순증가량이며 일별 합계가 아닙니다. 측정값이 없으면 비워 둡니다. 스타는 관심도를 나타내며 품질을 보장하지 않습니다.
README_KO.md
Original📱 XMSLEEP
백색 소음 및 자연 소리 재생을 위한 Android 앱으로, 휴식과 집중, 수면을 도와줍니다.
📱 스크린샷
🌐 웹 버전
설치 없이 브라우저에서 모든 기능을 바로 체험하세요: 113가지 자연 소리 · 자유로운 믹싱 · 끊김 없는 루프 · 6개 언어 · 카운트다운 타이머, 사운드 목록은 모바일 앱과 동기화됩니다.
👉 온라인 재생: tosencen.github.io/XMSLEEP/player.html
앱 내 설정 → 기타 → 웹 버전에서도 원터치로 접근하고 링크를 복사해 공유할 수 있습니다.
📱 소개
XMSLEEP은 백색 소음 및 자연 소리 재생에 특화된 Android 앱으로, 다양한 자연 소리를 제공하여 휴식, 집중, 수면을 도와줍니다. Material Design 3 디자인 가이드라인을 적용하여 깔끔하고 아름다운 인터페이스를 제공합니다.
✨ 기능
🎵 오디오 기능
- 다양한 백색 소음: 빗소리, 모닥불, 천둥, 고양이 가르릉, 새소리, 밤곤충 등 다양한 자연 소리 제공
- 온라인 오디오: GitHub에서 더 많은 오디오 리소스를 동적으로 로드
- 로컬 오디오: 휴대폰의 오디오 파일 재생 지원
- 끊김 없는 루프: 오디오 끊김 없이 반복 재생 지원
- 볼륨 제어: 각 사운드별 개별 볼륨 조절 또는 한 번에 모든 사운드 조절
- 볼륨 저장: 볼륨 설정이 앱 재시작 후에도 자동으로 유지됨
- 블루투스 헤드셋 지원: 블루투스 헤드셋 연결 해제 시 자동 재생 중지
- Bilibili 라이브 라디오: Bilibili 라이브 방송국 검색 및 재생, 즐겨찾는 방송국 고정 가능
- 명상 수면: 내장 명상 오디오를 다운로드해 오프라인 재생 가능
🎨 인터페이스 및 경험
- 아름다운 애니메이션: 내장 사운드에 WebP 애니메이션 제공
- Material Design 3: 최신 Material Design 3 디자인 가이드라인 적용
- 테마 전환: 라이트/다크 모드 전환, 시스템 테마 자동 적용
- 커스텀 테마: 다양한 색상 테마 및 동적 색상 지원
⚙️ 실용 기능
- 타이머 기능: 자동 재생 중지 시간 설정
- 프리셋 영역: 3개의 프리셋, 각 프리셋마다 최대 10개의 즐겨찾는 사운드 저장
- 즐겨찾기: 좋아하는 백색 소음 저장
- 최근 재생: 앱 재시작 시 최근 재생 목록 표시
- 전역 플로팅 버튼: 현재 재생 중인 사운드 표시, 빠른 일시정지 및 확장
- 스마트 상호작용: 플로팅 버튼과 프리셋 창이 상호 배타적, 스크롤 시 자동 숨김
- 자동 업데이트: GitHub Releases를 통한 업데이트 확인, 다운로드 상태 유지
🌐 웹 버전
- 온라인 플레이어: 브라우저에서 바로 사용 — 113가지 자연 소리 자유 믹싱, 끊김 없는 루프, 개별 볼륨 조절
- 다국어 지원: 중국어/영어/일본어/한국어/러시아어/번체 중국어 6개 언어
- 카운트다운 타이머: 커스텀 카운트다운 및 자동 정지, 실시간 표시
- 재생 중 패널: 재생 중인 사운드 한눈에 보기/정지/볼륨 조절
- 로딩 최적화: 첫 화면 프리페치 + LRU 캐시로 재생 즉시 시작
🛠️ 기술 스택
- Kotlin - 주요 개발 언어
- Jetpack Compose - 최신 UI 프레임워크
- Material Design 3 - UI 디자인 시스템
- ExoPlayer/Media3 - 오디오 재생 엔진
- OkHttp - 네트워크 요청 및 파일 다운로드
- Gson - JSON 파싱
- Kotlinx Serialization - JSON 직렬화
- Coil - 이미지 로딩
- WebP - 애니메이션 지원
- MaterialKolor - 동적 테마 색상 생성
- Accompanist - Pull-to-refresh 지원
- Hilt - 의존성 주입 프레임워크
- Lottie - 고품질 애니메이션 렌더링
- Web Audio API - 웹 버전 끊김 없는 루프 재생 (샘플 정밀도)
📦 현재 버전
- 버전: 2.3.5
- Version Code: 50
- 최소 지원: Android 8.0 (API 26)
- 대상 버전: Android 15 (API 35)
🆕 최신 업데이트 (v2.3.5)
🎨 새 기능
- 명상 오디오 오프라인 다운로드: 오디오 목록 우측 하단 배지로 원탭 다운로드(미다운로드/다운로드 중/완료 3상태), 성공/실패 모두 Toast 알림, 다운로드한 오디오는 오프라인 재생 가능
- 전체 페이지 스크롤: 명상 플레이어를 고정 영역 스크롤에서 전체 페이지 스크롤로 전환, 제목 표시줄은 스크롤 시 접히고 하단 여백을 두어 마지막 카드가 잘리지 않도록 함
🐛 수정
- 오프라인 재생 크래시: 로컬 캐시 오디오를 파일 소스로 재생하도록 수정,
file://를 네트워크 소스에 넘겨 발생하던 크래시 해결 - Bilibili 오디오 403: UA/Referer/Origin 헤더 추가로 오디오 스트림 가져오기·다운로드 거부 문제 해결
- 업데이트 확인 안정화: gh-proxy 미러 폴백, 다운로드 바이트 무결성 검증 및 기존 파일 재사용
✨ 개선
- 배지 부드러운 구분: 다운로드 완료는 연한 초록, 미다운로드는 회색으로 한눈에 구분
- 데드 코드 정리: 미사용 import, 참조 없는 함수, 중복 문자열 키 일괄 제거
🆕 최신 업데이트 (v2.3.4)
🎨 새 기능
- 프로스티드 글라스 다이얼로그: FrostedGlassSheet 컴포넌트 도입, 전역 다이얼로그·바텀시트 통일 개편(MD3 드래그 핸들 포함)
- 호흡 프론트그라운드 서비스: 페이즈 상태머신을 포그라운드 서비스로 이동, 다국어 음성 안내, 목록 무한 페이지링, 종료 시 자동 정리
- 테마 컬러 그리드: XMVISIO 스타일 3색 원형 그리드 + 중심 체크 애니메이션, 내장 배경은 자동으로 전용 테마 색상 적용
- 2차 페이지 상단바: 스크롤 시 숨겨지고 되돌아오면 다시 표시, 제목·본문 겹침 방지
- 타이머 다이얼: 사용자 지정 시간은 M3 원형 시간 선택기로 변경
✨ 개선
- QWeather 키 검증: 저장 전 host/key 강제 검증, 실패 시 다이얼로그에 오류 표시
- 업데이트 다운로드 소스 교체·저속 소스 전환; ProGuard 정밀 keep 규칙, 백업에서 민감 SP 제외, 다국어 문구 수정(번체 언어 코드 수정)
🐛 수정
- 다이얼로그 등장/퇴장 애니메이션 경직, 바텀 다이얼로그 좌우 이중 프레임
- 배경 설정 콜백 연결, 위치 권한 갱신, 진동 토글 의미론(P0)
- 배경 없음/사용자 배경으로 돌아가도 동적 색상이 강제 활성화되지 않음
- 인용구 이력 다이얼로그의 미연결 새로고침 버튼 숨김, 호흡 알림 아이콘을 채워진 스타일로 변경
🆕 최신 업데이트 (v2.3.3)
🎨 새 기능
- 매일 한 마디 배경: 매일 한 마디 팝업 배경을 Bing 일일 월페이퍼로 랜덤 적용(메모리 전용 캐시·디스크 사용 안 함). 텍스트는 하단 정렬·어두운 그라데이션으로 가독성 확보. 공유/저장 포스터도 동일 이미지 사용
- 민감어 필터: 매일 한 마디에서 자해·강한 부정 표현(자살·우울 등) 자동 차단. API는 재시도, 로컬은 건너뜀
✨ 개선
- 매일 한 마디 팝업: 화면 2/3 높이로 고정, 내용이 길면 스크롤. 새로고침 배지를 우상단으로 이동 및 둥근 모서리 적용
🆕 최신 업데이트 (v2.3.2)
🎨 새 기능
- 화풍 날씨 소스(BYOK): 날씨에 사용자 직접 입력 화풍 날씨 키(설정에서 Host + Key) 지원. 미설정 시 Open-Meteo 자동 폴백. 도시 단위 위치 + 다국어
✨ 개선
- 날씨 카드: 도시와 날짜를 한 줄로 통합(예「上海市 8月25日 화요일」)하고 힐링 문구 위에 배치. 소스 배지 제거
- 좌표 오프셋: WGS84 → GCJ02 변환으로 국내 위치 정확도 향상
🆕 최신 업데이트 (v2.3.1)
🎨 새 기능
- 웹 버전 온라인 플레이어: GitHub Pages 웹 버전 추가 — 113가지 자연 소리, 자유 믹싱, 끊김 없는 루프, 6개 언어 UI, 사운드 목록 앱과 동기화, 설치 없이 바로 사용
- 앱 웹 버전 진입점: 설정의 「기타」 모듈에 「웹 버전」 추가 — 원터치로 온라인 플레이어 열기, 링크 복사 공유 지원
- 흑백 모드 테마: 모노크롬 테마 추가, 미니멀한 비주얼
- 토마토 타이머 백그라운드 타이밍: 페이지를 떠나도 타이머 계속 진행, 스케일에 현재 단계 시간 표시
- 토마토 설정 시트 카드화: 카드 스타일 시트 + 종료음 미리듣기 + 휴식 시간 조절 가능
- 알림창 명상 컨트롤: 알림창/잠금 화면에서 명상 오디오 직접 제어
- 수량 복수형 현지화: 영어/러시아어 등 다국어 수량 표시 현지화 (plurals)
✨ 개선
- 권한 강화: 권한 선언 정리로 프라이버시 노출 축소
- Firebase 통계 및 크래시 리포트: 익명 사용 통계와 크래시 수집, 개인 식별 정보 미수집
- 의존성 업그레이드: okhttp 5.3.2, gson 2.11.0, androidx.media 1.8.0, core-splashscreen 1.2.0
- 리소스 및 서명 정리
🐛 수정
- 커스텀 카운트다운 표시 문제
- 호흡 서비스 등록, 알림 현지화
🆕 최신 업데이트 (v2.3.0)
🎨 새 기능
- 토마토 타이머 종료음: 무료 4종 벨소리 내장(차임/딩동/마림바/윈드차임). 집중 종료 시 자동 재생
- 토마토 타이머 종료 진동: 집중 종료 시 자동 진동 알림, 설정에서 켜기/끄기 가능
- 토마토 설정 시트: 토마토 페이지 오른쪽 위 톱니바퀴에서 종료음·완료 애니메이션·진동 설정, 시트 전체 펼침
- 종료음/진동 ×3회: 종료음과 진동이 각각 3회 반복 후 자동 정지
- 휴식 수동 시작: 집중 종료 후 자동으로 휴식에 들어가지 않고 「휴식 시작」 버튼으로 수동 시작
- 명상 반복 횟수: 명상 상세 페이지의 카운트다운을 「반복 횟수」로 변경. 1/2/3회 반복 후 자동 정지, 무한 반복과 상호 배타
- 날씨 모드 토마토 진입점: 날씨 모드 오른쪽 위에 토마토 타이머 바로가기 추가
✨ 개선
- 토마토 설정 다국어: 중국어/영어/일본어/한국어/러시아어/번체 중국어 지원
- 진동 구현 최적화: 시스템 Vibrator 직접 사용 및 VIBRATE 권한 추가로 신뢰성 향상
- 버전 업그레이드: 2.2.9 → 2.3.0
🆕 최신 업데이트 (v2.2.6)
🎨 새 기능
- Bilibili 라이브 라디오: Bilibili 라이브 방송 기능 추가. 카테고리별 검색 지원 (자습실, 백색 소음 등)
- 방송국 고정: 자주 사용하는 방송국을 고정하여 빠르게 전환, 라이브 중이 아닌 방송국은 자동 회색 표시
✨ 개선
- 편집 모드 최적화: 바텀 시트를 닫을 때 자동으로 핀 편집 모드 해제
- 프리셋 대화상자 개선: 프리셋 이름 편집 후 대화상자를 닫을 때 편집 상태 자동 리셋
이전 버전
v2.2.3
- 명언 위젯: 시간, 일일 명언, 새로고침 버튼을 표시하는 홈 화면 위젯 추가
v2.2.1
- 호흡 운동: 호흡 가이드 기능 추가
- 화면 켜짐 유지: 화면 켜짐 설정 최적화
- 날씨 오디오 매핑: 날씨와 오디오 매핑 개선
🚀 다운로드
최신 버전은 GitHub Releases에서 다운로드할 수 있습니다.
📋 빌드 요구사항
- Android Studio: Ladybug | 2024.2.1 이상
- JDK: 17 이상
- Android SDK: API 33 이상
- Gradle: 8.0 이상
🔨 빌드 방법
저장소 클론
git clone https://github.com/Tosencen/XMSLEEP.git cd XMSLEEPGradle 설정
gradle.properties.example를gradle.properties로 복사- (선택) GitHub Token 설정하여 API 제한 완화
프로젝트 열기
- Android Studio로 프로젝트 열기
- Gradle 의존성 동기화
프로젝트 실행
- 기기 연결 또는 에뮬레이터 실행
- 실행 버튼 클릭
📖 사용법
기본 조작
- 사운드 재생: 사운드 카드를 탭하여 재생, 다시 탭하여 중지
- 볼륨 조절: 카드 우측 하단의 볼륨 아이콘을 탭하여 각 사운드별 볼륨 조절
- 타이머 설정: 우측 하단의 타이머 버튼으로 자동 중지 시간 설정
인터페이스 조작
- 테마 전환: 좌측 상단의 테마 전환 버튼으로 라이트/다크 모드 전환
- 커스텀 설정: 설정 페이지에서 테마 색상, 애니메이션 숨김 등 조정
- 프리셋 관리: 사운드 카드 제목 탭 후 "프리셋에 추가" 선택
- 프리셋 전환: 하단 프리셋 영역에서 3개 프리셋 전환
- 즐겨찾기: 사운드 카드 제목 탭 후 "즐겨찾기" 선택
- Bilibili 라디오: 라디오 페이지의 검색 버튼을 탭하여 Bilibili 라이브 방송국을 카테고리별로 검색, 핀 아이콘으로 자주 사용하는 방송국 저장
고급 기능
- 전역 플로팅 버튼: 사운드 재생 중 플로팅 버튼 표시, 탭하여 재생 목록 확인
- 프리셋 일괄 추가: 플로팅 버튼 확장 상태에서 재생 중인 사운드를 프리셋에 일괄 추가
- 스마트 숨김: 스크롤 또는 탭 전환 시 플로팅 버튼 자동 숨김
⚠️ 사운드 출처
- 내장 사운드: 오픈소스 오디오 라이브러리
- 온라인 사운드: moodist 프로젝트 (MIT 라이선스)
- 타사 리소스: 일부 사운드는 타사 제공업체에서 제공, 해당 라이선스 적용
- Pixabay Content License 사운드: Pixabay Content License
- CC0 사운드: Creative Commons Zero License
🔒 개인정보
이 앱은 사용자의 개인정보 보호를 중요하게 생각합니다. 제품 개선을 위해 익명 사용 통계(활성 사용자 수, 충돌 보고서 등)를 수집하며, 개인 식별 정보는 수집하지 않습니다.
📄 라이선스
이 프로젝트는 MIT License를 따릅니다.
🤝 기여
Issue 및 Pull Request를 환영합니다!
기여 가이드
- 이 저장소를 Fork
- 기능 브랜치 생성 (
git checkout -b feature/AmazingFeature) - 변경사항 커밋 (
git commit -m 'Add some AmazingFeature') - 브랜치에 푸시 (
git push origin feature/AmazingFeature) - Pull Request 열기
👤 만든 이
Tosencen
- GitHub: @Tosencen
🙏 감사의 말
- moodist - 온라인 오디오 리소스
- Material Design 3 - UI 디자인 가이드라인
- MaterialKolor - 동적 색상 생성
⭐ 이 프로젝트가 도움이 되셨다면 Star를 눌러주세요!
© 2026 XMSLEEP. All rights reserved.





