Skip to content

Repository files navigation

RoomEq Remote (iOS)

iPhone 远程测量麦克风客户端。iPhone 用 AVAudioSession(.measurement) 录制设备端播放的扫频信号并上传, Android 设备端负责播放扫频、离线分析、写入 HAL 校准。是 Android phone-app 的 iOS 迁移。

环境

  • Xcode 13.3.1 / Swift 5.6 / iOS SDK 15.4(本机构建环境)
  • 最低目标:iOS 15,状态管理用 ObservableObject(非 @Observable

生成并打开工程

本机无 xcodegen,工程用 xcodeproj gem 程序化生成。增删源文件后重新生成:

ruby project.rb
open RoomEqRemote.xcodeproj

命令行构建 / 测试

# 构建(模拟器)
xcodebuild -project RoomEqRemote.xcodeproj -scheme RoomEqRemote \
  -sdk iphonesimulator -configuration Debug build CODE_SIGNING_ALLOWED=NO

# 单元测试(先启动一个模拟器,再指定其 UDID)
xcodebuild -project RoomEqRemote.xcodeproj -scheme RoomEqRemote \
  -sdk iphonesimulator -destination "id=<SIMULATOR_UDID>" test CODE_SIGNING_ALLOWED=NO

源码结构

RoomEqRemote/
├─ App/          # SwiftUI 入口、Info.plist、live() 组合根、场景前后台
├─ Protocol/     # 协议消息模型 + JSON 编解码(对齐 roomeq.remote.v1)
├─ Transport/    # length-frame 编解码 + NWConnection TCP 客户端
├─ Session/      # 配对 URI、工作流规则、UI 状态、局域网诊断、ViewModel 状态机
├─ Audio/        # 音量算法/WAV 头 + AVAudioSession(.measurement) 会话/采集/音量计/录音器
└─ UI/           # 主流程界面:顶栏/5步导航/任务面板/电平条/动作条

RoomEqRemoteTests/  # 编解码、拆包、配对、音量数值、WAV 头、状态机流程(21 项)

进度

全部功能已实现(编译通过 + 单测覆盖 + 模拟器启动渲染):

  • 协议模型、JSON 编解码、length-frame 拆包、配对 URI、音量算法、WAV 头
  • NWConnection 传输层、会话状态机(Hello/心跳 500ms/16 态/上传/返回/前后台)
  • AVAudioSession(.measurement) 会话、输入采集(→48k/mono/Int16)、音量计、WAV 录音器
  • SwiftUI 全流程界面,接 RemoteMeasureViewModel.live()

下一步:真机对真实 Android 设备端联调。音频采集/录音需真机验证(模拟器无麦克风), 其数值算法已单测。逐项对照 PORTING_MATRIX.md

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages