立即注册
查看: 682|回复: 0

[鸿蒙OS应用] 基于HarmonyOS应用开发实现音频播放相关管理应用

已绑定手机
发表于 2021-8-24 17:32:33 | 显示全部楼层 |阅读模式 来自 广东省深圳市
1. 介绍
音频播放相关管理应用包括音频播放、声音采集和音频相关管理(快进、快退、暂停、播放、音量控制)等功能,本篇Codelab旨在帮助开发者快速了解HarmonyOS应用开发、播放器应用以及音频收集和系统音量控制的用法。
本篇Codelab将实现的内容
您将构建一个应用程序实现以下内容:
基于HarmonyOS Player播放本地音频资源或从Internet获得的音频资源。
通过音频采集器采集现场音频流并保存到本地,以读取流的方式播放录音
分别对通知音量、媒体音量、通话音量的控制。
您将会学到什么
如何使用Player播放包括mp3、m4a、AAC等主流音频格式音频。
如何使用Player对音频播放控制。
如何使用AudioRecorder采集音频。
如何使用AudioRender播放音频。
如何使用SoundPlayer播放系统短音。
如何使用AudioManager设置通知音量、媒体音量和通话音量。

2. 搭建HarmonyOS环境
我们首先需要完成HarmonyOS开发环境搭建,可参照如下步骤进行。
安装DevEco Studio,详情请参考下载和安装软件。
设置DevEco Studio开发环境,DevEco Studio开发环境依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
-如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
-如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。
开发者可以参考以下链接,完成设备调试的相关配置:
-使用真机进行调试
-使用模拟器进行调试

3. 代码结构
本篇Codelab只对核心代码进行讲解,对于完整代码,我们在9 参考章节提供下载方式。接下来我们会讲解整个工程的代码结构,如下图:
1.jpg
api:音频播放器及媒体接口文件。
constant:代码中使用到的常量。
factoty:Sourcefactory构建媒体资源。
manager:HmPlayerLifecycle处理播放器生命周期。
view:PlayerLoading,SimplePlayerController分别为音频加载状态及进度条控制类文件。
HmPlayer:封装播放器的主要功能方法。
slice:MainAbilitySlice主程序页面和其他相关功能页面。
utils:存放所有封装好的公共方法,如DateUtils,LogUtils等。
resources:存放工程使用到的资源文件,其中resources\base\layout下存放xml布局文件;resources\base\media下存放音频文件。
config.json:配置文件,ability声明及权限配置。

4. 音频播放器
音频播放业务逻辑
步骤 1 - 创建Player,设置状态回调,HmPlayerCallback继承Player.IPLayerCallback。
Player player = new Player(Context);
player.setPlayerCallback(new HmPlayerCallback());
步骤 2 - 准备媒体资源,封装了SourceFactory,根据传入播放源类型。
private void initSourceType(Context context, String path) throws IOException {
    if (context == null || path == null) {
        return;
    }
    if (path.substring(0, NET_HTTP_MATCH.length()).equalsIgnoreCase(NET_HTTP_MATCH)
            || path.substring(0, NET_RTMP_MATCH.length()).equalsIgnoreCase(NET_RTMP_MATCH)
            || path.substring(0, NET_RTSP_MATCH.length()).equalsIgnoreCase(NET_RTSP_MATCH)) {
        mPlayerSource = new Source(path);
    } else if (path.startsWith(STORAGE_MATCH)) {
        File file = new File(path);
        if (file.exists()) {
            FileInputStream fileInputStream = new FileInputStream(file);
            FileDescriptor fileDescriptor = fileInputStream.getFD();
            mPlayerSource = new Source(fileDescriptor);
        }
    } else {
        RawFileDescriptor fd = context.getResourceManager().getRawFileEntry(path).openRawFileDescriptor();
        mPlayerSource = new Source(fd.getFileDescriptor(), fd.getStartPosition(), fd.getFileSize());
    }
}
......

5. 系统短音
使用方法
步骤 1 - 创建SoundPlayer
SoundPlayer soundPlayer = new SoundPlayer();
步骤 2 - 初始化系统短音,第一个参数为短音类型,第个二参数为播放时长
soundPlayer.createSound(ToneDescriptor.ToneType.DTMF_0, 500);
步骤 3 - 播放
soundPlayer.play();
步骤 4 - 释放资源
if (soundPlayer != null) {
    soundPlayer.release();
    soundPlayer = null;
}
—-结束


更多详细内容请下载附件查看
2021-8-24 17:31 上传
文件大小:
538.62 KB
下载次数:
0
附件售价:
2 RD币  购买记录
本地下载 立即购买

16RD supports Paypal , Payment is calculated at the exchange rate of the day. Unable to download please contact 18902843661 (WhatsApp OR wechat number)

关于一牛网在微软浏览器(Microsoft Edge、IE浏览器)警报通告&解决方案!(无法下载直接更换浏览器即可)

*附件为作者发布,与本站无关,如有侵权,请联系客服删除

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表