Skip to content

About

违停短信闹钟 — 监听违停类短信并立即弹出闹钟提醒的 Android App(Kotlin)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

违停短信闹钟 (ParkingAlarm)

收到违停短信时自动全屏响铃 + 震动提醒,即使手机静音也会响。

功能

  • 后台短信监听:自动捕获 incoming SMS,无需手动操作
  • 关键词匹配:检测"违停""违法停车""违章停车"等关键词(可自定义)
  • 全屏闹钟:匹配后弹出红色全屏界面,循环响铃 + 震动
  • 锁屏唤醒:手机锁屏时自动亮屏弹出
  • 静音穿透:使用 ALARM 音频流,静音模式下也能响
  • 返回键拦截:必须点击"停止"才能关闭闹钟,防止误触

项目结构

ParkingAlarm/
├── app/
│   ├── build.gradle.kts
│   ├── proguard-rules.pro
│   └── src/main/
│       ├── AndroidManifest.xml
│       ├── java/com/parkingalarm/app/
│       │   ├── MainActivity.kt      # 主界面:开关、关键词、测试
│       │   ├── SmsReceiver.kt       # 短信接收器:监听+关键词匹配
│       │   ├── AlarmActivity.kt     # 闹钟界面:响铃+震动+全屏
│       │   ├── BootReceiver.kt      # 开机自启
│       │   └── PrefManager.kt       # 偏好存储
│       └── res/
│           ├── layout/
│           │   ├── activity_main.xml
│           │   └── activity_alarm.xml
│           ├── values/
│           │   ├── strings.xml
│           │   ├── colors.xml
│           │   └── themes.xml
│           ├── drawable/            # 卡片/按钮/图标
│           ├── mipmap-anydpi-v26/   # 自适应图标
│           └── xml/
│               └── backup_rules.xml
├── build.gradle.kts
├── settings.gradle.kts
├── gradle.properties
└── gradle/wrapper/
    └── gradle-wrapper.properties

编译和安装

方式一:Android Studio(推荐)

  1. 下载安装 Android Studio
  2. 打开 Android Studio → File → Open → 选择 ParkingAlarm 文件夹
  3. 等待 Gradle Sync 完成(首次会自动下载依赖)
  4. 手机开启 USB 调试(设置 → 开发者选项 → USB 调试)
  5. 用数据线连接电脑
  6. 点击绿色三角形 Run 'app' 按钮,自动编译并安装到手机

方式二:命令行编译

# 确保已安装 Android SDK 并设置 ANDROID_HOME
cd ParkingAlarm

# 生成 Debug APK
./gradlew assembleDebug

# APK 输出路径
# app/build/outputs/apk/debug/app-debug.apk

# 通过 adb 安装到手机
adb install app/build/outputs/apk/debug/app-debug.apk

方式三:编译签名版 Release APK

Release 版需要用密钥库签名。密钥库和密码不存放在仓库中,请在项目根目录创建 local.properties(该文件已被 .gitignore 排除)并填入:

# Android SDK 路径
sdk.dir=/path/to/your/android-sdk

# 签名配置
RELEASE_STORE_FILE=release.keystore
RELEASE_STORE_PASSWORD=你的密钥库密码
RELEASE_KEY_ALIAS=你的密钥别名
RELEASE_KEY_PASSWORD=你的密钥密码

然后编译:

./gradlew assembleRelease
# 输出:app/build/outputs/apk/release/app-release.apk

上述四项也可改用同名环境变量传入,适合 CI 场景,优先级低于 local.properties。

若完全未配置签名信息,assembleRelease 仍可正常执行,只是产出未签名 APK。

自己生成密钥库

keytool -genkeypair -v \
  -keystore release.keystore \
  -alias parkingalarm \
  -keyalg RSA -keysize 2048 -validity 10950 \
  -dname "CN=ParkingAlarm, OU=Dev, O=Personal, L=Shenzhen, ST=Guangdong, C=CN"

⚠️ 密钥库是 App 的身份凭证:务必妥善保管且不要提交到任何仓库。一旦泄露,他人可以冒用你的身份发布 App 更新。已安装的用户只能被同一密钥签名的包覆盖升级,密钥丢失将导致用户必须卸载重装。

安装后设置(重要!)

1. 授予短信权限

首次打开 App 时会请求短信权限,请点击 允许。 如果误点了拒绝,可以在 设置 → 应用管理 → 违停短信闹钟 → 权限 中手动开启。

2. 各品牌手机额外设置

国产 ROM 有严格的后台限制,必须额外配置才能保证后台收到短信:

品牌 设置路径
小米/MIUI 设置 → 应用设置 → 应用管理 → 违停短信闹钟 → 自启动=ON, 省电策略=无限制
华为/EMUI 设置 → 应用 → 应用启动管理 → 违停短信闹钟 → 手动管理 → 全部开启
OPPO/ColorOS 设置 → 电池 → 应用耗电管理 → 违停短信闹钟 → 允许后台运行
vivo/OriginOS 设置 → 电池 → 后台耗电管理 → 违停短信闹钟 → 允许后台高耗电
三星 设置 → 电池和设备维护 → 电池 → 后台使用限制 → 添加例外

3. 默认短信应用说明

本 App 不需要设为默认短信应用。它通过 RECEIVE_SMS 权限监听短信广播, 不会拦截或删除短信,你的正常短信收发不受影响。

使用方法

  1. 打开 App
  2. 确认监控开关已开启(默认开启)
  3. 查看默认关键词列表,按需增删(每行一个关键词)
  4. 点击 保存关键词
  5. 点击 测试闹钟效果 可以预览闹钟界面和铃声
  6. 保持 App 后台运行即可

默认关键词

违停
违法停车
违章停车
违法停放
违规停车
不按规定停车
机动车违反规定停放

你可以添加更多,例如交警短信中常见的其他措辞。

技术细节

项目 说明
最低系统 Android 8.0 (API 26)
目标系统 Android 14 (API 34)
语言 Kotlin
构建 Gradle 8.2 + AGP 8.1.1
短信监听 BroadcastReceiver + Telephony.Sms.Intents.SMS_RECEIVED_ACTION
闹钟铃声 RingtoneManager.TYPE_ALARM + MediaPlayer (loop)
震动 Vibrator + VibrationEffect.createWaveform
锁屏唤醒 setShowWhenLocked + setTurnScreenOn (API 27+)
静音穿透 AudioManager.STREAM_ALARM

隐私说明

  • 本 App 不上传任何数据,所有短信内容仅在本地处理
  • 不读写通讯录、不联网、不含任何第三方 SDK
  • 关键词和设置存储在本地 SharedPreferences 中

About

违停短信闹钟 — 监听违停类短信并立即弹出闹钟提醒的 Android App(Kotlin)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages