Textus
당신이 펜을 잡으면 AI가 잉크를 이어줍니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Talking reminders for Android in your own voice or text-to-speech. Offline, no account, no ads.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Most reminder apps post a silent notification. SpeakAlert plays the reminder out loud, so you hear it even when the phone is in your pocket or across the room.
Requirements:
git clone https://github.com/ghostgramlabs/SpeakAlert.git
cd SpeakAlert
./gradlew assembleDebug # Windows: gradlew.bat assembleDebug
The debug APK lands in app/build/outputs/apk/debug/. Install it on a device or emulator
running Android 8.0 (API 26) or later:
./gradlew installDebug
Debug builds need no configuration. Only release builds need a signing key (see Release signing).
./gradlew testDebugUnitTest
Unit tests live in app/src/test and run on the JVM. Exact-alarm and notification behaviour
also needs testing on real devices; docs/REMINDER_RELIABILITY_TEST_PLAN.md
lists the manual checks.
Release builds read their signing key from local.properties, which git ignores:
speakalert.storeFile=your-release-key.jks
speakalert.storePassword=...
speakalert.keyAlias=...
speakalert.keyPassword=...
storeFile is resolved relative to the app/ directory. Never commit a keystore or its
passwords.
The app is a single Gradle module written in Kotlin with Jetpack Compose, Room, DataStore, AlarmManager, WorkManager and Media3, following an MVVM layout.
app/src/main/java/com/ghostgramlabs/speakalert/
├── alarm/ Exact-alarm scheduling, alarm receivers, boot rescheduling
├── audio/ Voice recording, processing, playback
├── data/ Room database, DAOs, repositories, backup/restore
├── domain/ Domain models and recurrence logic
├── service/ Foreground playback service and text-to-speech
├── ui/ Compose screens: home, add/edit, details, alert, settings
├── widget/ Home-screen widgets
└── util/ Shared helpers
docs/ Website served at ghostgramlabs.com/SpeakAlert (GitHub Pages)
store/ Play Store listing, screenshots and icons
tools/ Python scripts that generate the icon, screenshots and promo video
Translations are in app/src/main/res/values-*/strings.xml.
| Permission | Why |
|---|---|
RECORD_AUDIO | Record voice reminders |
POST_NOTIFICATIONS | Show reminder alerts (Android 13+) |
SCHEDULE_EXACT_ALARM, USE_EXACT_ALARM | Fire reminders at the exact minute |
USE_FULL_SCREEN_INTENT | Full-screen alert on the lock screen |
FOREGROUND_SERVICE, FOREGROUND_SERVICE_MEDIA_PLAYBACK | Keep playback running while a reminder speaks |
RECEIVE_BOOT_COMPLETED | Reschedule reminders after a restart |
ACCESS_NOTIFICATION_POLICY | Optional Do Not Disturb bypass |
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS | Ask to be exempted from battery limits that delay alarms |
BLUETOOTH_CONNECT | Route private playback to Bluetooth headphones |
WAKE_LOCK, VIBRATE | Wake the device and vibrate on alerts |
| Document | What it covers |
|---|---|
| ARCHITECTURE.md | How the app is built: packages, data model, the alarm and playback flow |
| CHANGELOG.md | What changed in each release |
| CONTRIBUTING.md | Reporting bugs, translating, and submitting pull requests |
| docs/REMINDER_RELIABILITY_TEST_PLAN.md | Manual device checks before a release |
Bug reports, translations and pull requests are welcome. See CONTRIBUTING.md. To report a security problem, follow SECURITY.md instead of opening a public issue. Everyone taking part is expected to follow the code of conduct.
SpeakAlert is released under the Apache License 2.0. You may use, modify and redistribute it, including commercially, as long as you keep the copyright notice and the NOTICE file, which credits GhostGram Labs.
The SpeakAlert name and icon are not covered by the license. If you publish a fork, give it its own name, icon and application ID.
Made by GhostGram Labs.