Skip to content

Repository files navigation

Pulse Flash

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

Android

环境要求

  • 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:35
  • minSdk:23
  • targetSdk:35
  • 版本名:1.1.0
  • 版本号:2
  • Android Gradle Plugin:8.7.3
  • Gradle Wrapper:8.10.2

构建 Debug APK

macOS / Linux:

./gradlew assembleDebug

Windows PowerShell:

.\gradlew.bat assembleDebug

生成的 Debug APK 位于:

app/build/outputs/apk/debug/app-debug.apk

安装到 Android 设备

先在手机上开启 USB 调试并连接电脑,然后运行:

adb install -r app/build/outputs/apk/debug/app-debug.apk

Windows PowerShell:

adb install -r .\app\build\outputs\apk\debug\app-debug.apk

使用 Android Studio 运行

  1. 用 Android Studio 打开仓库。
  2. 等待 Gradle Sync 完成。
  3. 选择 app 运行配置。
  4. 连接 Android 真机。
  5. 点击 Run。

模拟器通常可以预览大部分 UI 行为,但一般无法测试真实摄像头闪光灯输出。

iOS

iOS 项目位置:

ios/PulseFlash/PulseFlash.xcodeproj

环境要求

  • macOS。
  • Xcode 15 或更高版本。
  • 运行 iOS 16 或更高版本的 iPhone 真机。
  • 用于真机签名的 Apple Developer 账号或团队。

iOS 模拟器没有实体闪光灯,只能预览 UI,不能测试真实闪光灯输出。

构建与运行

open ios/PulseFlash/PulseFlash.xcodeproj

然后:

  1. 选择 PulseFlash scheme。
  2. 选择已连接的 iPhone。
  3. 如果 Xcode 提示签名错误,在 Signing & Capabilities 中选择你的 Apple Developer Team。
  4. 构建并运行。

权限说明

Android

Pulse Flash 会请求:

<uses-permission android:name="android.permission.CAMERA" />

Android 需要相机权限才能通过 Camera2 控制后置闪光灯。本应用不会拍照、不会录像,也不会使用网络。

iOS

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

常见问题

SDK location not found

设置 ANDROID_HOME,或在项目根目录创建 local.properties:

sdk.dir=/absolute/path/to/android-sdk

Windows 示例:

sdk.dir=C\:\\Users\\you\\AppData\\Local\\Android\\Sdk

闪光灯按钮不可用

请检查:

  • 是否已授予相机权限。
  • 手机是否有后置闪光灯。
  • 是否有其他相机 App 正在运行。
  • 系统是否因为隐私控制、过热保护或其他限制阻止 torch 访问。

模拟器没有闪光灯效果

大多数 Android 模拟器没有实体闪光灯。可以在模拟器中测试屏幕爆闪模式,闪光灯模式需要使用真机测试。

iOS 签名失败

在 Xcode 中打开 PulseFlash target,并在 Signing & Capabilities 里选择你的 Apple Developer Team。

路线图

  • 添加截图或简短演示 GIF。
  • 添加 Release APK 构建说明。
  • 添加 GitHub Actions,用于验证 Android 构建。
  • 修复并补全干净的 UTF-8 本地化字符串。
  • 为应用商店分发添加隐私政策页面。
  • 增加设置持久化和光源模式逻辑测试。

License

当前仓库还没有包含 license 文件。正式分发或接受外部贡献前,建议先添加明确的开源许可证。

About

Android flashlight strobe app for Xiaomi and general Android phones

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages