feat: 系统控制模块 - 硬件抽象层

新增:
- ScreenController 屏幕控制接口 + FiseScreenController 实现(ROM广播)
- NfcController NFC控制接口 + FiseNfcController 实现(sysfs读写)
- VibrationController 振动接口 + FiseVibrationController 实现(13种方案+音频)
- SystemStateMonitor 系统状态监听(电量、蓝牙状态广播)
- DeviceModule Hilt硬件抽象绑定
- 8个音频文件(res/raw/)
- AppEvent 新增4个系统状态事件

修改:
- MainActivity 注册 SystemStateMonitor
- HomeFragment 硬件验证demo(熄屏/振动/NFC/电量实时显示)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
dongliang
2026-04-27 13:50:25 +09:30
parent 5680613e86
commit c7ae11a574
22 changed files with 815 additions and 100 deletions

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 首页布局NavBar + 内容区 -->
<!-- 首页布局NavBar + 硬件验证 demo -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background"
android:orientation="vertical">
<!-- 顶部导航栏(首页模式:状态图标 + 时间 + 电量) -->
<!-- 顶部导航栏 -->
<include layout="@layout/layout_nav_bar" />
<!-- 内容区域 -->
@@ -22,71 +22,44 @@
android:paddingEnd="@dimen/safe_area_right"
android:paddingBottom="@dimen/safe_area_bottom">
<!-- demo 信息展示 -->
<!-- 系统状态信息 -->
<TextView
android:id="@+id/tvDemoInfo"
android:id="@+id/tvStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/text_primary"
android:textSize="@dimen/text_small"
android:lineSpacingExtra="3dp"
android:layout_marginBottom="@dimen/spacing_md" />
android:layout_marginBottom="@dimen/spacing_sm" />
<!-- 按钮 demo触发 QuTipDialog -->
<!-- 屏幕控制测试 -->
<TextView
android:id="@+id/btnScreenOff"
style="@style/ActionButton.Warning"
android:text="熄屏测试3秒后亮屏"
android:layout_marginBottom="@dimen/spacing_sm" />
<!-- 振动测试 -->
<TextView
android:id="@+id/btnVibrate"
style="@style/ActionButton.Primary"
android:text="振动测试"
android:layout_marginBottom="@dimen/spacing_sm" />
<!-- NFC 测试 -->
<TextView
android:id="@+id/btnNfcScan"
style="@style/ActionButton.Success"
android:text="NFC 读卡测试"
android:layout_marginBottom="@dimen/spacing_sm" />
<!-- 弹窗测试 -->
<TextView
android:id="@+id/btnShowTip"
style="@style/ActionButton.Primary"
android:text="显示提示弹窗"
android:layout_marginBottom="@dimen/spacing_sm" />
<!-- 按钮 demo触发 QuConfirmDialog -->
<TextView
android:id="@+id/btnShowConfirm"
style="@style/ActionButton.Success"
android:text="显示确认弹窗"
android:layout_marginBottom="@dimen/spacing_sm" />
<!-- 按钮 demo其他样式展示 -->
<TextView
android:id="@+id/btnDanger"
style="@style/ActionButton.Danger"
android:text="危险按钮"
android:layout_marginBottom="@dimen/spacing_sm" />
<TextView
android:id="@+id/btnWarning"
style="@style/ActionButton.Warning"
android:text="警告按钮"
android:layout_marginBottom="@dimen/spacing_sm" />
<TextView
android:id="@+id/btnGrey"
style="@style/ActionButton.Grey"
android:text="灰色按钮"
android:text="提示弹窗测试"
android:layout_marginBottom="@dimen/spacing_sm" />
<!-- 半宽按钮并排 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
style="@style/ActionButton.Grey"
android:layout_width="0dp"
android:layout_weight="1"
android:text="取消"
android:layout_marginEnd="@dimen/spacing_sm" />
<TextView
style="@style/ActionButton.Primary"
android:layout_width="0dp"
android:layout_weight="1"
android:text="确定" />
</LinearLayout>
</LinearLayout>
</ScrollView>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.