Android知识要点整理(6)----音频播放管理

本文详述了Android中音频播放管理的关键点,包括音量控制、音频焦点管理和音频输出设备处理。通过调整音量、请求音频焦点以及监听音频设备变化,确保APP在播放音频时遵循用户预期,防止多个APP同时播放音频。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

APP中播放音频,最重要的一点就是要保证用户能够按预期的来控制音频的播放,还有就是保证多个APP不会同时播放音频。为了达到这两点要求,我们需要掌握如何控制音频的音量和播放,如何控制同一时刻只有有一个音频流,如何控制音频设备的输出等等。下面就从3个方面详细讲解。

1.音量和播放控制

用户能够控制APP播放音频的音量以及控制它的播放暂停快进后退等操作,这对提升APP体验来说是基本的。设想如果一个APP突然播放了声音,然后你不知声音从哪里来,没法停止播放,又没法调整音量,你肯定会很懊恼。

调整音量

首先我们要先了解音频流的概念。Android系统为不同的场景设定了不同的音频流,比如音乐播放,闹钟铃声,通知声音,来电铃声,系统声音和DTMF铃声等都有独立的音频流。我们可以独立地空着各类音频流而不会影响其他音频流。就像我们在用酷狗播放音乐时,我们通过物理按键调整音量,只会影响音乐音频流的声音大小,而来电铃声的音量不会改变。系统内定的音频流如下所示:
这里写图片描述
虽然有这么多的音频流,但是在同一时刻,只会有一个音频流处于激活状态。默认情况下,按音量加减物理键时会调整当前激活状态的音频流的音量。系统默认激活的音频流是STREAM_RING,也就是说如果你的APP没有播放任何音频,那么按音量加减物理键调整的就是来电铃声的音量。Android系统提供了一个方法setVolumnControlStream()来指定当前要调节音量的音频流。如果我们有用到音量调整功能,我们需要在Activity或Fragment的onCreate回调中明显地设置目标音频流,这样能保证不管我们的APP是否可见,音量控制都是符合用户预期的。比如播放音乐,我们需要调用如下代码:

setVolumeControlStream(AudioManager.STREAM_MUSIC);

这样调用之后,不管Activity或Fragment是否可见,按音量加减键时都会调整音乐播放的音频流的音量。
注意:上面讲述的物理音量加减键的响应。如果是虚拟音量加减按钮,我们只需要监听按钮的点击操作,然后调用AudioManageradjustStreamVolume(int streamType, int direction, int flags)来调整音量。

控制播放或者暂停

播放,暂停,停止,跳过,上一首或者下一首等物理按键在许多手持设备中都有,甚至一些头戴设备如耳机也会有这些物理按钮。当这些物理按钮被按下时,Android系统会发送一个广播,ACTION指定为ACTION_ MEDIA_BUTTON。我们需要实现这样一个广播监听器来响应这些按钮操作。

<receiver android:name=".RemoteControlReceiver">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值