本示例主要展示了音频通话相关的功能,使用@ohos.multimedia.audio 、@ohos.net.socket 等接口,实现音频录制和渲染,音频数据网络传输等功能
发起通话 | 来电 | 通话页 | 悬浮窗 |
---|---|---|---|
使用说明
1.语音通话需要运行服务端代码模拟启动流媒体服务端,连接成功后服务端会在终端打印client连接数,如下图:
2.服务端和两台设备在局域网内组成socket网络,运行时需要注意修改ip地址:
3.仅体验语音通话功能时,可以两台设备都手动启动语音通话应用,分别点击接听按钮进入通话页面
4.体验场景所有功能时,需要两台设备启动聊天应用,通过左下方语音按钮发起语音通话
5.一方发起语音通话请求,对方选择同意或拒绝
6.对方同意后,进行通话
7.通话页或请求通话页可以选择关闭麦克风或扬声器
8.对方拒接或同意后挂断,则返回聊天页面
/VoiceCallDemo
├── entry # 主entry模块目录
│ └── src
│ ├── main
│ ├── ets # ets模块目录
│ ├── audio # 音频录制和渲染
│ ├── components # 组件目录
│ ├── ComponentOption.ets # 按钮组件,如扬声器麦克风切换按钮
│ ├── ComponentPerson.ets # 头像和名称组件
│ ├── ComponentVoiceBg.ets # 通话公用父组件
│ ├── UIAnswer.ets # 被呼叫UI
│ ├── UICall.ets # 呼叫UI
│ ├── UIVoice.ets # 呼叫UI或通话UI
│ ├── controller #
│ ├── FloatWindowController.ets # 负责管理悬浮窗切换
│ ├── IndexController.ets # 负责管理socket连接逻辑,worker启动停止,UI和通话事件传递
│ ├── entryability
│ ├── model #
│ ├── AudioManagerModel.ts # mic开关和扬声器开关
│ ├── BufferModel.ts # 流媒体连接,数据接收与发送,管理workers
│ ├── OptionModel.ets # 与聊天示例应用通讯事件管理
│ ├── net # 网络层封装代码,不含业务逻辑
│ ├── pages #
│ ├── utils # 工具类目录
│ ├── workers # works目录
│ ├── CapturerWorker.ts # 音频录制线程
│ ├── RendererWorker.ts # 音频渲染线程
│ ├── Constants.ts # 定义 workers 通讯常量,UI事件常量,IPC通讯常量
权限 | 说明 | 权限登记 | 授权方式 |
---|---|---|---|
ohos.permission.MICROPHONE | 允许应用使用麦克风 | normal | user_grant |
ohos.permission.INTERNET | 允许使用Internet网络 | normal | system_grant |
ohos.permission.GET_WIFI_INFO | 允许应用获取WLAN信息 | normal | system_grant |
ohos.permission.MANAGE_AUDIO_CONFIG | 允许应用进行全局麦克风静音等操作 | system_basic | system_grant |
ohos.permission.SYSTEM_FLOAT_WINDOW | 允许应用使用悬浮窗的能力 | system_basic | system_grant |
1.本示例仅支持标准系统上运行,支持设备:RK3568,DAYU200。
2.本示例为Stage模型,支持API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0 Release)
3.本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。
4.本示例涉及使用系统接口@ohos.multimedia.audio:setAudioScene,需要手动替换Full SDK才能编译通过,具体操作可参考替换指南
5.本示例所配置的权限为system_basic级别( 相关权限级别可通过权限定义列表 查看),需要手动配置对应级别的权限签名( 具体操作可查看自动化签名方案)
6.本示例有使用系统特性api,需要手动配置对应级别的应用类型("app-feature": "hos_system_app")。具体可参考profile配置文件bundle-info对象内部结构
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo code\SystemFeature\Media\VoiceCallDemo\ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。