NEXT版本的B站是如何做到调节系统HarmonyOS鸿蒙Next媒体音量的
NEXT版本的B站是如何做到调节系统HarmonyOS鸿蒙Next媒体音量的 鸿蒙 next 版本的哔哩哔哩可以通过滑动屏幕调节系统媒体音量,而且通过按键的调节也可以通过他们自己的音量条 UI 进行展示,有人知道这是怎么做到的?系统音量的调节 API 看起来都没有向用户开放。
楼主你好,可以参考codelab示例代码控制音量,参考链接:
https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/tutorials_NEXT-VideoPlayer
手势控制播放页面通过绑定平移手势(PanGesture),上下滑动调节屏幕亮度,左右滑动调节视频音量。
setVolume
setVolume(volume: number): void
设置媒体播放音量,只能在prepared/playing/paused/completed状态调用,可以通过volumeChange事件确认是否生效。
更多关于NEXT版本的B站是如何做到调节系统HarmonyOS鸿蒙Next媒体音量的的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
// 引入音频模块 import audio from ‘@ohos.multimedia.audio’;
// 获取音频管理器实例 let audioManager = audio.getAudioManager(); // 获取音量管理器实例 let audioVolumeManager = audioManager.getVolumeManager(); // 获取默认音量组的音量组管理器实例 let audioVolumeGroupManager = audioVolumeManager.getVolumeGroupManager(audio.DEFAULT_VOLUME_GROUP_ID);
// 设置媒体音量为0.5(取值范围0-1) audioVolumeGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 0.5).then(() => { console.info(‘Volume set successfully’); });
AudioVolumeGroupManager 好像没有 setVolume 这个 API,
在HarmonyOS NEXT中,B站通过调用系统提供的音量管理API来实现媒体音量的调节。HarmonyOS NEXT的音量管理API允许应用程序直接与系统的音量控制模块交互,从而实现对不同音频流(如媒体、通话、通知等)的音量进行独立控制。B站作为一款视频播放应用,主要使用媒体音量控制。
具体来说,B站的开发者通过HarmonyOS NEXT的AudioManager
类来获取和设置媒体音量。AudioManager
提供了getStreamVolume(int streamType)
和setStreamVolume(int streamType, int index, int flags)
等方法,streamType
参数指定音频流类型,如AudioManager.STREAM_MUSIC
表示媒体音量。B站通过这些方法获取当前媒体音量并响应用户的音量调节操作,将调整后的音量值设置到系统中。
此外,HarmonyOS NEXT的音量管理API还支持监听音量变化事件,B站可以通过注册AudioManager.OnAudioFocusChangeListener
来监听媒体音量的变化,确保应用能够及时响应系统或其他应用对音量的调整。