bBeng-HeartRate-4.66-pad/
├── app/ # 主应用模块
├── core/ # 核心模块(语音识别等)
├── ICDeviceManager/ # IC 设备管理模块
├── myLockView/ # ✅ Kiosk 模式模块(本次集成重点)
├── myWIFIView/ # ✅ WiFi 配置模块
├── uniplugin_module/ # UniApp 插件模块
├── build.gradle # 根项目构建配置
└── settings.gradle # 模块配置
app/
├── src/main/
│ ├── AndroidManifest.xml # ✅ 已修改(Application、权限、Receiver)
│ ├── assets/ # UniApp 资源文件
│ │ └── apps/__UNI__8D02B4B/www/ # UniApp 编译产物
│ ├── java/com/YuyeTech/HeartRate/
│ │ ├── MyApplication.java # ✅ 新增(自定义 Application)
│ │ └── KioskHelper.java # ✅ 新增(锁屏控制辅助类)
│ └── res/
│ ├── xml/
│ │ └── device_admin.xml # ✅ 新增(Device Admin 配置)
│ ├── values/
│ │ ├── strings.xml
│ │ └── themes.xml
│ └── drawable/... # 图标、启动图等
├── libs/ # AAR 依赖库
│ ├── lib.5plus.base-release.aar # DCloud 5+ 基础库
│ ├── uniapp-v8-release.aar # UniApp V8 引擎
│ └── ... # 其他第三方库
└── build.gradle # 应用构建配置
关键文件:
MyApplication.java - 应用入口,负责自动初始化 KioskKioskHelper.java - 提供静态方法控制锁屏AndroidManifest.xml - 声明 Application、权限、ReceivermyLockView/
├── src/main/
│ ├── AndroidManifest.xml # 模块清单(Receiver 声明)
│ ├── java/com/ble/mylockview/
│ │ ├── admin/ # 设备管理
│ │ │ ├── KioskManager.java # 🌟 Kiosk 核心管理器
│ │ │ └── KioskDeviceAdminReceiver.java # Device Admin 接收器
│ │ ├── boot/ # 开机启动
│ │ │ ├── BootReceiver.java # 开机广播接收器
│ │ │ ├── BootLauncher.java # 启动逻辑
│ │ │ └── BootActionChecker.java # 启动条件检查
│ │ ├── config/ # 配置
│ │ │ └── LaunchConfig.java # Activity 配置
│ │ └── service/ # 服务
│ │ └── StartService.java # 前台服务
│ └── res/xml/
│ └── device_admin.xml # Device Admin 策略定义
└── build.gradle # 模块构建配置
核心功能:
关键 API:
KioskManager.setDebug(boolean) // 设置调试模式
KioskManager.attach(Activity) // 绑定 Activity
KioskManager.onResume() // Activity onResume
KioskManager.onPause() // Activity onPause
KioskManager.onDestroy() // Activity onDestroy
KioskManager.exitKiosk() // 退出 Kiosk 模式
KioskManager.interceptKey(KeyEvent) // 拦截按键
KioskManager.interceptTouch(MotionEvent) // 拦截触摸(逃生门)
myWIFIView/
├── src/main/
│ ├── AndroidManifest.xml
│ ├── java/com/ble/mywifiview/
│ │ ├── WifiModule.java # 🌟 WiFi 核心模块
│ │ ├── WifiAdapter.java # WiFi 列表适配器
│ │ ├── WifiScanItem.java # WiFi 扫描项
│ │ ├── WifiCallback.java # 连接回调接口
│ │ ├── WifiConnector.java # 连接工具类
│ │ ├── WifiPasswordDialog.java # 密码输入对话框
│ │ └── WifiDisconnectDialog.java # 断开确认对话框
│ └── res/
│ ├── layout/
│ │ ├── dialog_wifi_list.xml # WiFi 列表对话框
│ │ ├── item_wifi.xml # WiFi 列表项
│ │ └── dialog_wifi_password.xml # 密码输入对话框
│ └── drawable/ # WiFi 图标资源
└── build.gradle
核心功能:
关键 API:
WifiModule.showWifiDialogView(Context, WifiCallback) // 显示 WiFi 列表对话框
WifiModule.scan(Context) // 扫描 WiFi
WifiModule.connect(Context, ssid, password, callback) // 连接 WiFi
WifiModule.disconnect(Context) // 断开 WiFi
WifiModule.isWifiReallyConnected(Context) // 检查 WiFi 连接状态
WifiModule.getConnectedWifiSsid(Context) // 获取当前连接的 SSID
WifiModule.openWifiSettings(Context) // 跳转系统 WiFi 设置
使用方式:
// 从 JS 调用(需要交互)
WifiModule.showWifiDialogView(activity, new WifiCallback() {
@Override
public void onConnecting() {
// 正在连接
}
@Override
public void onConnected() {
// 连接成功
}
@Override
public void onFailed(String reason) {
// 连接失败
}
@Override
public void onDisconnected() {
// 已断开
}
});
uniplugin_module/
├── src/main/
│ ├── AndroidManifest.xml
│ └── java/io/dcloud/uniplugin/
│ ├── HeartRateModule.java # 心率模块(JS 接口)
│ ├── ICDeviceModule.java # IC 设备模块(JS 接口)
│ ├── TestModule.java # 测试模块
│ ├── NativePageActivity.java # 原生页面
│ ├── permission.java # 权限管理
│ └── db800/ # DB800 心率设备 SDK
│ ├── HeartRateSdkManager.java
│ ├── BluetoothUtils.java
│ ├── HearRateManagerCallbacks.java
│ └── ScannerPacket.java
└── build.gradle
说明:
uni.requireNativePlugin() 从 JS 调用原生功能core/
├── src/main/
│ ├── AndroidManifest.xml
│ ├── java/... # 百度语音识别相关
│ └── jniLibs/ # 原生 .so 库
└── libs/
└── bdasr_V3_20210628_cfe8c44.jar # 百度 ASR SDK
app (主应用)
├─→ core (语音识别)
├─→ ICDeviceManager (IC 设备)
├─→ myLockView (Kiosk 模式) ✅
├─→ myWIFIView (WiFi 配置) ✅
└─→ uniplugin_module (UniApp 插件)
在 app/build.gradle 中声明:
dependencies {
implementation project(':core')
implementation project(':ICDeviceManager')
implementation project(':myLockView') // ✅
implementation project(':myWIFIView') // ✅
implementation project(':uniplugin_module')
// UniApp 核心库
implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'])
}
include ':app'
include ':core'
include ':ICDeviceManager'
include ':myLockView' // ✅
include ':myWIFIView' // ✅
include ':uniplugin_module'
buildscript {
ext.kotlin_version = '1.8.0'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
android {
compileSdkVersion 33
defaultConfig {
applicationId "com.YuyeTech.HeartRate"
minSdkVersion 26
targetSdkVersion 33
versionCode 1
versionName "4.66"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
app/src/main/java/com/YuyeTech/HeartRate/MyApplication.javaapp/src/main/java/com/YuyeTech/HeartRate/KioskHelper.javaapp/src/main/res/xml/device_admin.xmlKIOSK_SETUP_GUIDE.mdQUICK_TEST_GUIDE.mdREADME_KIOSK_INTEGRATION.mdPROJECT_STRUCTURE.md (本文件)app/src/main/AndroidManifest.xml
MyApplication文件:app/src/main/java/com/YuyeTech/HeartRate/MyApplication.java
位置:onCreate() → registerActivityLifecycleCallbacks() → onActivityCreated()
@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {
if (activity instanceof io.dcloud.PandoraEntry ||
activity instanceof io.dcloud.PandoraEntryActivity) {
// ✅ 这里实现了"无需 JS 调用"的核心逻辑
KioskHelper.disableLockScreen(activity);
KioskHelper.keepScreenOn(activity);
KioskManager.attach(activity);
}
}
文件:app/src/main/java/com/YuyeTech/HeartRate/KioskHelper.java
方法:disableLockScreen(Activity)
public static void disableLockScreen(Activity activity) {
// 1. 解锁当前屏幕
activity.getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
);
// 2. 作为 Device Owner 禁用锁屏
DevicePolicyManager dpm = ...;
if (dpm.isDeviceOwnerApp(packageName)) {
dpm.setKeyguardDisabled(adminComponent, true);
}
}
文件:myLockView/src/main/java/com/ble/mylockview/admin/KioskManager.java
关键方法:
attach(Activity) - 初始化(第 69 行)enableLockTask() - 启用 LockTask(第 107 行)hideSystemUI() - 隐藏系统 UI(第 165 行)interceptTouch(MotionEvent) - 五指逃生门(第 236 行)System Boot
↓
MyApplication.onCreate()
↓
LaunchConfig.setLaunchActivity(PandoraEntry.class)
KioskManager.setDebug(BuildConfig.DEBUG)
↓
ActivityLifecycleCallbacks 注册
↓
User Launch App / BootReceiver 启动
↓
PandoraEntry.onCreate()
↓
onActivityCreated() 回调
↓
KioskHelper.disableLockScreen() [禁用锁屏]
KioskHelper.keepScreenOn() [屏幕常亮]
KioskManager.attach() [进入 Kiosk]
↓
hideSystemUI() [隐藏状态栏]
enableLockTask() [锁定任务]
↓
Kiosk Mode Active ✅
JS 调用
↓
uni.requireNativePlugin('myWIFIView')
↓
WifiModule.showWifiDialogView()
↓
检查权限 → 扫描 WiFi
↓
显示列表对话框
↓
用户点击 WiFi
↓
输入密码(如需)
↓
WifiModule.connect()
↓
Android 10+: NetworkRequest
Android 9-: WifiConfiguration
↓
回调:onConnected() / onFailed()
Application.ActivityLifecycleCallbacks - 监听所有 Activity 生命周期onActivityCreated() 中自动初始化 KioskDevicePolicyManager.setKeyguardDisabled() - 禁用锁屏DevicePolicyManager.setLockTaskPackages() - 设置 LockTask 白名单Activity.startLockTask() - 进入 LockTask 模式WifiNetworkSpecifierWifiConfiguration最后更新:2026-01-22
文档版本:1.0