尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证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.