树叶云鸿蒙OS教程:鸿蒙OS 短音播放开发指导

场景介绍

短音播放主要负责管理音频资源的加载与播放、tone 音的生成与播放以及系统音播放。

接口说明

短音播放开放能力分为音频资源、tone 音和系统音三部分,均定义在 SoundPlayer 类。

接口名描述
SoundPlayer(int taskType)构造函数,仅用于音频资源。
int createSound(String path)从指定的路径加载音频数据生成短音资源。
int createSound(Context context, int resourceId)根据应用程序上下文合音频资源 ID 加载音频数据生成短音资源。
int createSound(AssetFD assetFD)从指定的 AssetFD 实例加载音频数据生成短音资源。
int createSound(java.io.FileDescriptor fd, long offset, long length)根据文件描述符从文件加载音频数据生成音频资源。
int createSound(java.lang.String path, AudioRendererInfo rendererInfo)根据从指定路径和播放信息加载音频数据生成短音资源。
boolean setOnCreateCompleteListener(SoundPlayer.OnCreateCompleteListener listener)设置声音创建完成的回调。
boolean setOnCreateCompleteListener(SoundPlayer.OnCreateCompleteListener listener, boolean isDiscarded)设置用于声音创建完成的回调,并根据指定的isDiscarded标志位确定是否丢弃队列中的原始回调通知消息。
boolean deleteSound(int soundID)删除短音同时释放短音所占资源。
boolean pause(int taskID)根据播放任务ID暂停对应的短音播放。
int play(int soundID)使用默认参数播放短音。
int play(int soundID, SoundPlayerParameters parameters)使用指定参数播放短音。
boolean resume(int taskID)恢复短音播放任务。
boolean setLoop(int taskID, int loopNum)设置短音播放任务的循环次数。
boolean setPlaySpeedRate(int taskID, float speedRate)设置短音播放任务的播放速度。
boolean setPriority(int taskID, int priority)设置短音播放任务的优先级。
boolean setVolume(int taskID, AudioVolumes audioVolumes)设置短音播放任务的播放音量。
boolean setVolume(int taskID, float volume)设置短音播放任务的所有音频声道的播放音量。
boolean stop(int taskID)停止短音播放任务。
boolean pauseAll()暂停所有正在播放的任务。
boolean resumeAll()恢复虽有已暂停的播放任务。
接口名描述
SoundPlayer()构造函数,仅用于 tone 音。
boolean createSound(ToneDescriptor.ToneType type, int durationMs)创建具有音调频率描述和持续时间(毫秒)的 tone 音。
boolean createSound(AudioStreamInfo.StreamType streamType, float volume)根据音量和音频流类型创建 tone 音。
boolean play(ToneDescriptor.ToneType toneType, int durationMs)播放指定时长和 tone 音类型的 tone 音。
boolean pause()暂停 tone 音播放。
boolean play()播放创建好的 tone 音。
boolean release()释放 tone 音资源。
接口名描述
SoundPlayer(String packageName)构造函数,仅用于系统音。
boolean playSound(SoundType type)播放系统音。
boolean playSound(SoundType type, float volume)指定音量播放系统音。

音频资源的加载与播放

  1. 通过 SoundPlayer(int taskType)构造方法获取 SoundPlayer 类的实例化对象,其中入参 taskType 的取值范围和含义参考枚举类 AudioManager.AudioStreamType 的定义。
  1. 调用 createSound(String path) 方法从指定路径加载音频资源,并生成短音 ID,后续可使用通过短音 ID 进行短音资源的播放和删除等操作。
  1. (可选)提供单独对音量,循环次数,播放速度和优先级进行的设置的方法,支持在短音播放过程中进行实时调整。
  1. 短音播放提供两种方法,一种是包含播放参数设置的 play(int soundID, SoundPlayerParameters parameters) 方法,用户可以在 SoundPlayerParameters 数据结构中定义音量,循环次数,播放速度和优先级,另一种是使用默认播放参数的 play(int soundID) 方法。短音播放成功后返回任务 ID,供后续对任务的管理。
  1. 通过任务 ID,可以对短音播放任务进行暂停,恢复和停止。
  1. 短音资源使用完毕需要调用 deleteSound(int soundID)完成对资源的释放。

下面的样例展示音频资源的加载与播放:

   public void demo() {
       // 步骤1:实例化对象
       SoundPlayer soundPlayer = new SoundPlayer(AudioManager.AudioVolumeType.STREAM_MUSIC.getValue());
       // 步骤2:指定音频资源加载并创建短音
       int soundId = soundPlayer.createSound("/system/xxx");
       // 步骤3:指定音量,循环次数和播放速度
       SoundPlayerParameters parameters = new SoundPlayerParameters();   
       parameers.setVolumes(new AudioVolumes());
       parameters.setLoop(10);    
       parameters.setSpeed(1.0f);
       // 步骤4:短音播放
       soundPlayer.play(soundId, parameters);
       // 步骤5:停止播放
       soundPlayer.stop(soundId);
       // 步骤6:释放短音资源
       soundPlayer.deleteSound(soundId);
   }

tone 音的生成与播放

  1. 通过 SoundPlayer() 构造方法获取 SoundPlayer 类的实例化对象。
  1. 使用 SoundPlayer 的实例化对象,通过 createSound(ToneDescriptor.ToneType type, int durationMs)方法,指定 tone 音类型和 tone 音播放时长来创建 tone 音资源。
  1. 使用 SoundPlayer 的实例化对象,通过 play、pause、release 方法完成 tone 音播放,tone 音暂停和 tone 音资源释放。

下面的样例展示 tone 音的生成与播放:

   public void demo() {
       // 步骤1:实例化对象
       SoundPlayer soundPlayer = new SoundPlayer();
       // 步骤2:创建DTMF_0(高频1336Hz,低频941Hz)持续时间1000ms的tone音
       soundPlayer.createSound(ToneDescriptor.ToneType.DTMF_0, 1000);
       // 步骤3:tone应播放,暂停和资源释放
       soundPlayer.play();
       soundPlayer.pause();
       soundPlayer.release();
   }

系统音的播放

  1. 通过 SoundPlayer(String packageName) 构造方法获取 SoundPlaye r类的实例化对象。
  1. 使用 SoundPlayer 的实例化对象,通过 playSound(SoundType type) 或 playSound(SoundType type, float volume) 方法指定系统音类型和音量,并进行系统音播放。

下面的样例展示系统音的播放:

   public void demo() {
       // 步骤1:实例化对象
       SoundPlayer soundPlayer = new SoundPlayer("packageName");
       // 步骤2:播放键盘敲击音,音量为1.0
       soundPlayer.playSound(SoundType.KEY_CLICK, 1.0f);
   }

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/156314.html<

(0)
运维的头像运维
上一篇2025-03-15 20:45
下一篇 2025-03-15 20:46

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注