# MyRecordTest **Repository Path**: hellochengkai/my-record-test ## Basic Information - **Project Name**: MyRecordTest - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-11 - **Last Updated**: 2025-04-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 双通道录音测试应用 ## 项目概述 双通道录音测试应用是一个Android应用程序,用于同时测试和比较两种不同音频源的录音效果。应用支持实时波形显示、音频回放、增益调节、录音时长限制等功能,为音频录制质量测试提供了直观的可视化界面。 ## 主要功能 ### 双通道录音 - 支持两种不同的音频源同时录制: - 标准麦克风源 (MIC) - 语音识别专用源 (VOICE_RECOGNITION) - 每个通道独立录制为PCM格式音频文件 - 录音参数:48kHz采样率,16位PCM格式 - 支持单声道和双声道录音配置(语音识别通道仅支持单声道) ### 实时波形显示 - 录音和回放时均可显示实时音频波形 - 自定义波形显示组件,支持单声道和双声道数据显示 - 单声道波形显示颜色:紫色 (#6200EE) - 双声道波形显示颜色: - 左声道:蓝色 (#4285F4) - 右声道:红色 (#EA4335) - 最大显示100个数据点,实时滚动 ### 增益控制 - 提供波形增益调节功能,范围 -5 至 +5 - 增益调节不影响实际录音质量,仅影响波形显示幅度 - 垂直滑动条直观控制增益大小 ### 录音控制 - 开始/停止录音按钮,集成计时器显示 - 声道配置设置:单声道/双声道选择(语音识别通道强制单声道) - 最大录音时间设置:1、2、5、10、30分钟可选 - 录音时长限制,达到设定时间自动停止 ### 音频回放 - 回放已录制的音频文件 - 回放进度条控制 - 播放时可以看到音频波形 - 显示当前播放时间和总时长 ### 界面自适应 - 支持横屏和竖屏两种显示模式: - 竖屏:两个录音模块垂直排列 - 横屏:两个录音模块水平排列 - 响应式设计,适应不同屏幕尺寸 ## 应用截图 ![应用界面截图](screenshots/new_recording_app_screenshot.png) *图1: 双通道录音应用界面截图* ## 项目结构 ### 主要类 - `MainActivity`: 应用入口,负责权限管理和初始化录音Fragment - `RecordFragment`: 实现录音、回放和波形显示的核心类,支持单声道和双声道配置 - `StereoWaveformView`: 自定义视图,负责单声道和双声道音频波形绘制和显示 ### 布局文件 - `activity_main.xml`: 主Activity布局,包含两个Fragment容器 - `activity_main.xml (layout-land)`: 横屏模式下的主Activity布局 - `fragment_record.xml`: 录音界面布局,包含控制按钮和波形显示 ### 文件存储 - 录音保存为PCM格式原始音频数据 - 文件命名规则:按照音频源类型命名(mic_recording.pcm 和 voice_recognition_recording.pcm) - 文件保存在应用内部存储空间 ## 技术实现细节 ### 音频录制 - 使用Android `AudioRecord` API进行原始PCM音频录制 - 支持单声道 (CHANNEL_IN_MONO) 和双声道 (CHANNEL_IN_STEREO) 配置 - 使用独立线程进行音频数据的读取和写入 - 实现最大录音时间限制功能,超时自动停止 ### 音频回放 - 使用Android `AudioTrack` API进行PCM音频回放 - 根据录音的声道配置自动选择匹配的回放声道 - 支持进度条显示和拖动控制播放位置 - 通过线程安全的方式处理播放状态 ### 波形显示 - 自定义View实现波形绘制 - 支持单声道和双声道显示模式 - 使用Path和Canvas进行高效绘制 - 支持动态数据更新和滚动显示 - 支持波形增益调节(-5至+5范围) ### 设置管理 - 使用对话框设置声道配置和最大录音时间 - 每个录音源独立保存设置配置 - 使用SharedPreferences存储设置项目 - 智能识别和限制音频源(语音识别强制单声道) ### 多线程处理 - 使用线程安全的方式处理UI更新 - 后台线程用于音频读写操作 - 定时器线程用于时间计数和进度更新 - 通过Handler将工作线程结果发送至UI线程 ### 屏幕适配 - 使用layout-land资源目录实现横屏布局 - 响应式设计,使用权重分配空间 - 不同屏幕方向下的资源文件自动切换 ## 使用说明 1. 启动应用后,程序会自动请求录音权限 2. 权限获取后,界面显示两个录音模块:标准麦克风和语音识别 3. 声道配置设置: - 点击"声道"按钮选择单声道或双声道 - 语音识别模块仅支持单声道 4. 录音时长设置: - 点击"录音时长"按钮设置最大录音时间(1-30分钟) 5. 录音操作: - 点击"开始录音"按钮开始录制 - 录音过程中,按钮会显示当前录音时长 - 录音过程中可以观察实时波形 - 可以通过增益滑动条调节波形显示幅度 - 点击"停止录音"按钮停止录制 6. 回放操作: - 录音完成后,点击"回放录音"按钮播放 - 可以通过进度条控制播放位置 - 点击"停止回放"按钮停止播放 ## 权限要求 - `RECORD_AUDIO`: 用于访问麦克风进行录音 ## 开发环境 - Android Studio - minSdkVersion: 21 (Android 5.0 Lollipop) - targetSdkVersion: 33 (Android 13) - Java语言开发 ## 实现注意事项 - 音频处理操作应在工作线程中进行,避免阻塞UI线程 - UI更新必须在主线程中进行,防止出现CalledFromWrongThreadException - 音频资源(AudioRecord/AudioTrack)使用后必须及时释放 - 横竖屏切换时Activity会重新创建,需要妥善处理状态保存和恢复