自学鸿蒙应用开发(45)- 播放短音频

2021-06-09 10:03:28 浏览数 (1)

秒表动作的同时播放音频,会更加带感。以下是效果视频:

准备音频文件

秒表动作音频可以自己录制,也可以从网上寻找。得到文件之后使用音频编辑软件进行编辑,得到一个滴答滴音频文件之后将这个文件放置到项目的midia文件夹中:

播放音频文件

鸿蒙应用开发可以使用SoundPlayer播放音频文件:

代码语言:javascript复制
代码语言:javascript复制
private void startSound(float speed, OnPlayListener listener) {
    //实例化音频播放器对象
    soundPlayer = new SoundPlayer(AudioManager.AudioVolumeType.STREAM_MUSIC.getValue());
    // 指定音频资源加载并创建短音
    soundId = soundPlayer.createSound(getContext(), ResourceTable.Media_1tick);
    soundPlayer.setOnCreateCompleteListener((soundPlayer1, i, i1) -> {
        // 短音播放,设置音量、循环次数和播放速度
        taskId = soundPlayer.play(soundId);
        soundPlayer.setVolume(taskId, 1.0f);
        soundPlayer.setLoop(taskId, -1); // “-1”表示一直循环播放
        soundPlayer.setPlaySpeedRate(taskId, speed);
        if(listener != null){
            listener.onPlay();
        }
    });
}

音频播放后,我们得到一个音频播放器对象soundPlayer、播放音频任务识别子taskId,音频文件识别子soundId。

停止播放

停止播放时需要用到开始播放时得到的各种信息:

代码语言:javascript复制
private void stopSound(){
    //停止播放
    soundPlayer.stop(taskId);
    taskId = 0;
    // 释放短音资源
    soundPlayer.deleteSound(soundId);
    soundId = 0;
    // 释放播放器
    soundPlayer = null;
}

代码中清除了所有有关播放的信息,实际开发时可以根据实际情况考虑不销毁播放器,或者不释放音频资源。

参考代码

完整代码可以从以下链接下载:

https://github.com/xueweiguo/Harmony/tree/master/StopWatch

参考资料

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/media-audio-sound-playback-0000000000041097

作者著作介绍

《实战Python设计模式》是作者去年3月份出版的技术书籍,该书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。

0 人点赞