Pulse Flash 是一个跨平台手电筒与爆闪工具,支持 Android 和 iPhone。
Android 版本使用原生 Java、Camera2 和简洁的 Material 风格界面实现;iOS 版本位于 ios/PulseFlash,使用 SwiftUI + AVFoundation 实现。
安全提示:爆闪光可能引起不适、偏头痛或光敏性癫痫反应。请不要近距离照射眼睛、驾驶者、动物或反光表面。
- 支持 1-20 Hz 可调爆闪频率。
- 支持 20-80% 可调亮灯占空比。
- 支持三种光源模式:
- 后置摄像头闪光灯。
- 全屏白/黑切换的屏幕爆闪。
- 闪光灯 + 屏幕同步爆闪。
- 内置预设模式:
- 柔和脉冲:3 Hz。
- 信号爆闪:8 Hz。
- 高频爆闪:15 Hz。
- 支持常亮手电筒模式。
- 爆闪或常亮时可保持屏幕常亮。
- 清晰的相机权限申请流程与状态提示。
- 支持 Camera2 闪光灯检测和不可用状态处理。
- App 离开前台时自动关闭爆闪和手电筒。
- Android 自适应启动图标。
- 附带 iOS SwiftUI 版本。
Android 版本提供一个专注的控制界面:
- 顶部状态卡片显示权限、闪光灯可用性和当前模式。
- 中央大按钮用于开始/停止爆闪。
- 光源选择:闪光灯、屏幕、同步。
- 频率滑杆。
- 占空比滑杆。
- 预设模式按钮。
- 屏幕常亮开关。
- 常亮手电筒按钮。
- 主界面内置安全警告。
.
├── app/ Android 应用模块
│ └── src/main/
│ ├── java/com/pulseflash/strobe/MainActivity.java
│ ├── res/layout/activity_main.xml
│ └── res/values-en/strings.xml
├── ios/PulseFlash/ iOS SwiftUI 版本
├── gradle/wrapper/ Gradle Wrapper
├── build.gradle Android Gradle Plugin 配置
├── settings.gradle Gradle 项目设置
└── README.md
- JDK 17。
- Android SDK Platform 35。
- 与 AGP 8.7.3 兼容的 Android Build Tools。
- 用于测试真实闪光灯的 Android 真机。
- Android 6.0 或更高版本,用于 Camera2 torch API。
当前 Android 配置:
- 包名:
com.pulseflash.strobe compileSdk:35minSdk:23targetSdk:35- 版本名:
1.1.0 - 版本号:
2 - Android Gradle Plugin:
8.7.3 - Gradle Wrapper:
8.10.2
macOS / Linux:
./gradlew assembleDebugWindows PowerShell:
.\gradlew.bat assembleDebug生成的 Debug APK 位于:
app/build/outputs/apk/debug/app-debug.apk
先在手机上开启 USB 调试并连接电脑,然后运行:
adb install -r app/build/outputs/apk/debug/app-debug.apkWindows PowerShell:
adb install -r .\app\build\outputs\apk\debug\app-debug.apk- 用 Android Studio 打开仓库。
- 等待 Gradle Sync 完成。
- 选择
app运行配置。 - 连接 Android 真机。
- 点击 Run。
模拟器通常可以预览大部分 UI 行为,但一般无法测试真实摄像头闪光灯输出。
iOS 项目位置:
ios/PulseFlash/PulseFlash.xcodeproj
- macOS。
- Xcode 15 或更高版本。
- 运行 iOS 16 或更高版本的 iPhone 真机。
- 用于真机签名的 Apple Developer 账号或团队。
iOS 模拟器没有实体闪光灯,只能预览 UI,不能测试真实闪光灯输出。
open ios/PulseFlash/PulseFlash.xcodeproj然后:
- 选择
PulseFlashscheme。 - 选择已连接的 iPhone。
- 如果 Xcode 提示签名错误,在 Signing & Capabilities 中选择你的 Apple Developer Team。
- 构建并运行。
Pulse Flash 会请求:
<uses-permission android:name="android.permission.CAMERA" />Android 需要相机权限才能通过 Camera2 控制后置闪光灯。本应用不会拍照、不会录像,也不会使用网络。
iOS 版本使用 AVFoundation 的 torch API。必须在带有闪光灯的 iPhone 真机上运行。
- 屏幕爆闪模式可在没有后置闪光灯的设备上使用。
- 闪光灯爆闪效果取决于手机硬件、Camera HAL、系统限制和设备温度状态。
- 部分设备会限制高频闪光灯开关。
- 其他相机 App、隐私控制或系统过热保护可能会暂时阻止闪光灯访问。
- 离开 App 后会自动关闭爆闪和常亮手电筒,避免后台持续照明。
Android 版本主要按 Xiaomi / HyperOS 设备体验设计,同时兼容支持 Camera2 torch API 的通用 Android 手机。
爆闪效果在某些场景下可能带来风险或不适。
请负责任地使用:
- 不要将闪光灯照向人眼、动物、驾驶者或反光表面。
- 避免近距离照射眼睛。
- 如果有人出现不适、头晕、头痛或视觉异常,请立即停止使用。
- 不要在可能有光敏性癫痫风险的人群附近使用爆闪模式。
- 高亮屏幕爆闪同样可能造成不适。
构建 Debug 版本:
./gradlew assembleDebug如果本地 Android SDK 环境支持,可运行 Android lint:
./gradlew lintDebug清理构建产物:
./gradlew clean设置 ANDROID_HOME,或在项目根目录创建 local.properties:
sdk.dir=/absolute/path/to/android-sdkWindows 示例:
sdk.dir=C\:\\Users\\you\\AppData\\Local\\Android\\Sdk请检查:
- 是否已授予相机权限。
- 手机是否有后置闪光灯。
- 是否有其他相机 App 正在运行。
- 系统是否因为隐私控制、过热保护或其他限制阻止 torch 访问。
大多数 Android 模拟器没有实体闪光灯。可以在模拟器中测试屏幕爆闪模式,闪光灯模式需要使用真机测试。
在 Xcode 中打开 PulseFlash target,并在 Signing & Capabilities 里选择你的 Apple Developer Team。
- 添加截图或简短演示 GIF。
- 添加 Release APK 构建说明。
- 添加 GitHub Actions,用于验证 Android 构建。
- 修复并补全干净的 UTF-8 本地化字符串。
- 为应用商店分发添加隐私政策页面。
- 增加设置持久化和光源模式逻辑测试。
当前仓库还没有包含 license 文件。正式分发或接受外部贡献前,建议先添加明确的开源许可证。