This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
此模块是 WeNext Android 框架的媒体处理核心模块,提供音视频通信、音乐播放和音效处理功能。基于多厂商 RTC SDK 支持(声网、腾讯云、即构、火山引擎)的统一抽象层。
IMediaService: 顶层服务接口,聚合了RTC通信、音乐播放和音效功能MediaService: 具体实现类,通过配置注入支持不同RTC厂商@Synchronized
fun createMediaService(config: IMediaConfig): IMediaService {
return MediaService(config)
}
IRtcEngine: RTC引擎抽象接口,支持不同厂商SDKIRtcCallback: 统一的RTC事件回调接口RtcType: 支持的RTC厂商类型枚举(AGORA_RTC, T_RTC, ZEGO_RTC, VOLC_RTC)IMediaRtcService)核心方法:
joinChannel(): 异步加入频道,支持超时处理leaveChannel(): 离开频道,清理资源muteLocalAudioStream(): 控制本地音频流发布IMusicService)核心方法:
playMusic(): 播放音乐文件,支持循环次数配置setMusicVolume(): 设置音乐整体音量shareSystemMusic(): 开启/关闭系统音频分享ISoundEffectService)核心方法:
playSoundEffect(): 播放音效,返回音效ID用于后续控制setSoundEffectVolume(): 设置特定音效音量IRtcEngine 接口抽象不同厂商SDKcurrRtcType 运行时切换RTC厂商CoroutineScope 管理异步任务生命周期SerialHandler 保证关键操作的串行执行IMediaRtcListener: RTC事件监听IMediaMusicListener: 音乐播放事件监听MediaMusicPlayState: 音乐播放状态枚举MediaShareSystemAudioState: 系统音频分享状态ReentrantReadWriteLock 保护RTC类型切换ConcurrentList 管理监听器集合AtomicBoolean/AtomicInteger 原子状态更新RtcChannelInfo: RTC频道信息,包含频道名、RTC类型、用户IDWeNextAudioVolumeInfo: 音频音量信息MediaConflictConfig: 媒体冲突配置AudioRouter: 音频路由类型(耳机、扬声器、蓝牙等)isRtcChannelChanged() 方法用于处理异步回调的有效性验证leaveChannel() 结束通话destroy() 方法释放RTC引擎资源IMediaConfig 注入必要的配置RtcError 枚举定义MediaChannelNameNull, MediaTokenNull 等该模块遵循标准Android Library测试结构:
./gradlew :frame:media:test./gradlew :frame:media:connectedAndroidTest