Skip to content

平台适配原理

架构

                    ┌──────────────┐
                    │  Verity Mod  │
                    └──────┬───────┘
                           │ isAndroid() ?
              ┌────────────┼────────────┐
              ▼                         ▼
        ┌──────────┐            ┌──────────────┐
        │  桌面路径 │            │   安卓路径    │
        └──────────┘            └──────────────┘
              │                         │
    ┌─────────┼─────────┐     ┌────────┼────────┐
    ▼         ▼         ▼     ▼        ▼        ▼
javax.sound TargetData 本地  OpenAL  ALC     手动WAV
SourceLine   Line    Sherpa  Play   Capture   Header
 (TTS)     (STT)   (TTS/STT) (TTS)  (STT)   (PCM→WAV)

平台检测

VerityPlatform.isAndroid() 通过三路检测:

java
// 1. 系统属性
vendor.contains("Android") || osName.contains("Android")

// 2. 路径特征
userHome.contains("/storage/emulated/")
|| userHome.contains("/data/data/")

// 3. 启动器类名反射
Class.forName("net.kdt.pojavlaunch.PojavLoginActivity")
Class.forName("com.movtery.zalithlauncher.ZalithLauncherActivity")
Class.forName("com.movtery.fcl.FCLApplication")

TTS 路径

步骤桌面安卓
HTTP 请求 MiMo API
接收 WAV 音频
解析 WAV 头
播放 PCMSourceDataLine.write()AL10.alBufferData() + alSourcePlay()
清理line.drain() + close()Thread.sleep(duration) + alDeleteSources()

STT 路径

步骤桌面安卓
打开设备AudioSystem.getTargetDataLine()alcCaptureOpenDevice() 通过 JNI
采集循环line.read(buffer)alcCaptureSamples() 通过 JNI
关闭设备line.stop() + close()alcCaptureStop() + alcCaptureCloseDevice()
PCM→WAVAudioSystem.write()pcmToWav() 手动写头
Base64
HTTP→MiMo ASR

作者 xzy4260 · v3.0 将与 B站 涓星向凡 合作开发