HarmonyOS SDK的Audio Kit闭源开放能力具体有哪些?
摘要:1.问题描述: 如何实现自定义音量调节? 解决方案: 设置系统音量 应用无法直接调节系统音量,系统提供了ArkTS组件AVVolumePanel音量面板,应用可以创建该组件,让用户通过界面操作来调节音量。 设置应用音量 管理应用音量的接口由
1.问题描述:
如何实现自定义音量调节?
解决方案:
设置系统音量
应用无法直接调节系统音量,系统提供了ArkTS组件AVVolumePanel音量面板,应用可以创建该组件,让用户通过界面操作来调节音量。
设置应用音量
管理应用音量的接口由AudioVolumeManager提供,在使用之前,需要使用getVolumeManager()获取AudioVolumeManager实例,示例代码如下:
import { audio } from '@kit.AudioKit';
let audioManager = audio.getAudioManager();
let audioVolumeManager = audioManager.getVolumeManager();
设置应用音量。
当音量模式设置为APP_INDIVIDUAL时,可通过下面示例接口设置应用音量。
// 设置应用的音量(范围为0到100)。
audioVolumeManager.setAppVolumePercentage(20).then(() => {
console.info(`set app volume success.`);
});
设置音频流音量
在ArkTS API端和Native API端分别有对应的API用来设置音频流音量。
使用ArkTS API时,开发者可以使用AVPlayer或AudioRenderer的setVolume()方法。
使用AVPlayer设置音频流音量的示例代码如下:
let volume = 1.0; // 指定的音量大小,取值范围为[0.00-1.00],1表示最大音量
avPlayer.setVolume(volume);
使用AudioRenderer设置音频流音量的示例代码如下:
import { BusinessError } from '@kit.BasicServicesKit';
audioRenderer.setVolume(0.5).then(() => { // 音量范围为[0.0-1.0]
console.info('Invoke setVolume succeeded.');
}).catch((err: BusinessError) => {
console.error(`Invoke setVolume failed, code is ${err.code}, message is ${err.message}`);
});
使用Native API时开发者可使用OH_AudioRenderer_SetVolume接口设置当前音频流音量值,示例代码如下:
// 要设置的音量值,音量值的范围是[0.0, 1.0]。
float volume = 0.5f;
// 设置当前音频流音量值。
OH_AudioStream_Result OH_AudioRenderer_SetVolume(audioRenderer, volume);
请注意:
setVolume接口调整的是音频流本身的音量,不是系统音量,音量条本身不会发生变化,而且音频流本身的音量默认值是1,即以系统音量来播放,应用只可以在系统音量的基础上调到0~1倍,不会超过系统音量,也不会影响系统音量的值(即音量条)。
为确保用户能感知音量变化,应用后台不能调节音量,否则系统会做出对应的控制措施,因此音量面板设置volumeLevel初始值是不生效的,只有改变volumeLevel值触发音量面板,才会改变当前系统音量;并且音量面板调节具体音量由系统控制,当前播放什么音频就调节什么音量,没有播放时就会调节媒体音量。
2.问题描述:
如何实现支持滑动的视频音量调节功能?
解决方案:
Slider组件结合音频流音量管理AVPlayer或AudioRenderer实现。Slider组件用于支持用户滑动获取音量值,将获取到的值通过setVolume接口传递给音频音量管理实现音量滑动控制调节。
3.问题描述:
集成腾讯云点播实现视频播放,自定义声音按钮实现音量滑动调节有什么比较好的策略?
解决方案:
使用Slider组件实现音量控制滑动条,结合腾讯云点播SDK的setAudioPlayoutVolume方法进行实现。实现时,建议默认音量100,即默认系统当前音量播放。
