# Module: components — 可重用組件

`handprobe.components`（319 檔）是與超聲成像解耦的可重用子系統：DICOM、檔案、顯示、輸入、串口、音頻、網絡等。

## Responsibilities

按子包：

| 子包 | 職責 |
|---|---|
| `dicom/` | DICOM 服務全家桶：Server、Storage、Worklist、MPPS、Print、Local + `JDicom*` JNI 包裝 + `UnitConverter` |
| `file/` | 檔案系統抽象：`PodFilesSys`（探頭數據目錄）、`AssetsFile`、檔案選擇器 `fileselect.FileManage` |
| `display/` | 第二顯示器支持（`SecondDislay`） |
| `input/` | 鍵盤/軌跡球/觸摸輸入 |
| `serialport/` | 串口設備（掃描槍/身份證等外設） |
| `usb/` | USB 設備：`HS5pRGBIf`（RGB 輸出機型） |
| `audio/` | 音頻：`AudioPlayer` + `voice/vosk/VoskSpeechRecognizer`（語音輸入） |
| `opencv/` | OpenCV Java 封裝 |
| `network/` | 網絡工具 |
| `wifi/` | Wi-Fi 管理 |
| `BroadCast/` | 廣播接收 |
| `PatientInfo/` `UserInfo/` | 患者/用戶數據模型與 DB（`Exam`、`AnimalExam`、`User`、`LoginInfo`） |
| `task/` | `TaskManager` 後台任務線程 |
| `permission/` | 權限申請封裝 |
| `ultrasys/` | 成像共享部件：`FrameLineData`（幀線數據 + FileManager）、`cine/`（`CinePartitionBuffer`、`CinePlayer`、`MBCinePlayer`、`ICineIterator`、`MCineRollBuffer`）、`parameter/`（`BScanPara`/`CScanPara`/`MScanPara`/`PWScanPara`/`MITIData`…） |
| `utils/` | `AppUtil`、`FileOperate`、`LanguageUtil`、`LogUtil`、`QlogUtil`、`ScreenUtil`、`ToastUtil` |
| `widget/` | 自定義控件（`HEditText`、`HArrayAdapter`…） |

## Key Files

- `dicom/JDicomServer.java` — DICOM 服務 JNI 入口（native `libdoppler` 內建 DICOM 棧）
- `file/PodFilesSys.java` — 探頭數據目錄管理（App 外置存儲佈局）
- `file/fileselect/fileselect/FileManage.java` — manifest 註冊的檔案管理 Activity
- `PatientInfo/db/Exam.java`、`AnimalExam.java` — xUtils ORM 患者檢查表
- `ultrasys/cine/MCineRollBuffer.java` — cine 環形緩衝（錄製回放）
- `ultrasys/parameter/MITIData.java` — MI/TI 熱指數數據 + Observable

## Dependencies

- **Used by:** `handprobe.application.*`、`com.Com.*`
- **Uses:** `org.xutils`（ORM）、`jni.*`（JDicom*）、`org.opencv`、Vosk（`org.vosk`）

## Notable Patterns / Gotchas

- DICOM 棧實際在 **native**（`JDicom*` 全是 native 方法），Java 側只是參數對象（`DicomPresetPara`、`DicomMPPSServicePara`）與生命周期管理
- 患者數據庫同時支持人（`Exam`）與動物（`AnimalExam`）兩套表，獸醫模式在查詢層切換
- `MCineRollBuffer` 是內存敏感的環形緩衝——掃描過程全幀緩存於 RAM（`largeHeap="true"` 為此開）
- 語音識別走 `org.vosk`（離線），模型在 `assets/vosk/`（中/英 small 模型，~139 MB）
