树叶云鸿蒙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

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

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