Managing Audio Playback之Managing Audio Focus
同一时间可能要好多个app在播放audio,Android用audio focus 来避免app之前互相影响.只有持有audio focus的app才可以播放audio.
可以用requestAudioFocus()来获取对应audio stream的audio focus.如果返回值是AUDIOFOCUS_REQUEST_GRANTED的话,即说明成功获得audio focus.
AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
// Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
// Start playback.
}
当播放完成时,应该调用abandonAudioFocus()来告诉系统不再需要focus,其参数是AudioManager。OnAudioFocusChangeListner().
// Abandon audio focus when playback complete
am.abandonAudioFocus(afChangeListener);
可以通过下面的code来获得短暂的focus,和上面的差别在requestAudioFocus的第三个参数为AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK。
/ Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
// Start playback.
}
在OnAudioFocusChangeListener 中我们可以检测audio focus的loss/gain 等事件.
AudioManager.OnAudioFocusChangeListener afChangeListener =
new AudioManager.OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT) {
// Pause playback
} else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
// Resume playback
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
am.abandonAudioFocus(afChangeListener);
// Stop playback
}
}
};
当发生duck是,需要降低音量.
OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
// Lower the volume
} else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
// Raise it back to normal
}
}
};
Managing Audio Playback之Managing Audio Focus相关推荐
- Android Audio Playback Mode
常见Playback Mode 常见 FLAG 常见的播放录音线程 Audio HAL 输出流设备 常见Playback Mode 1 Deep buffer Playback:音频文件是在AP侧解码 ...
- web audio api_带有Web Audio API的动态声音
web audio api This article is part of a web dev series from Microsoft. Thank you for supporting the ...
- 如何一键制作DTS Audio DVD、AC3 Audio DVD、WAV Audio DVD纯音乐碟片
DTS Audio DVD.AC3 Audio DVD.WAV Audio DVD纯音乐DVD碟片,不仅音质好.一张碟片可装90首左右的曲目(是普通CD碟片的6倍),而且支持5.1环绕声.播放时可显示 ...
- 如何制作WAV Audio DVD、AC3 Audio DVD、DTS Audio DVD封面音乐碟片?
DTS Audio DVD.AC3 Audio DVD.WAV Audio DVD纯音乐DVD碟片,不仅音质好.一张碟片可装90首左右的曲目(是普通CD碟片的6倍),而且支持5.1环绕声.播放时可显示 ...
- html中audio使用src,HTML Audio src用法及代码示例
DOM Audio的src属性用于设置或返回音频的src属性的值. src属性通常用于指定音频文件的位置(URL). 用法: 返回src属性:audioObject.src 设置src属性:audio ...
- html控制多个音频audio css,vue中audio自定义样式(页面中包含多个audio)
前言 一开始看到UI设计稿,我内心是十分抗拒的.觉得用原生audio的样式就可以了,也不是特别丑,毕竟时间给的不多,自定义样式还要改逻辑啥的.在网上搜索了一番有没有合适的插件,没有看到心动的.最后还是 ...
- Training—Managing Audio Playback
阅读:https://developer.android.com/training/managing-audio/index.html 系统将音频流分为了很多种:stream for playing ...
- 2-管理Audio焦点(Managing Audio Playback)
由于许多App都可能会播放多媒体文件,对于它们之间该如何相互作用就必须要充分考虑.为了避免所有的音乐App同时播放音乐,Android系统提供了audio焦点机制来控制多媒体文件的播放,只有获得了au ...
- Managing Audio Playback
主任务链接地址:http://docs.eoeandroid.com/training/managing-audio/index.html 翻译:长剑耿介 完成时间:2012年9月5日 管理音频播放 ...
最新文章
- day042前端之HTML
- rust 关于ARM 板卡的使用
- Linux bash中I/O重定向及管道
- 2022-01-06
- 安卓PopupWindow使用详解与源码分析(附项目实例)
- 迫于误解压力,RMS从自由软件基金会与MIT离职
- new/delete和malloc/free的区别一般汇总
- mysql 优化 修复原理_mysql下表的修复与优化
- Codeforces Round #439 (Div. 2)题解
- Matlab简单教程:条件分支
- 全球前十大证券交易所在区块链领域的探索和布局
- 服务端访问Linux的DNS出现DNS request timed out..
- python下载pywifi
- 支持向量机的特点,优点缺点
- 1047: 字符图形3-平行四边形
- jquery给input赋值 val()方法
- xshell6个人版解除窗口限制(亲测可用,需卸载当前xshell6)
- java中的轮子是什么意思_后端的轮子(一)
- 记录,太坑了,深度学习显卡损坏原来是这样子的。
- 多元分析(Multivariate Analysis)
热门文章
- 名编辑电子杂志大师教程 | 名编辑设计设置面板
- AntWithAntenna
- 中国姓氏的日语发音[补充部分]
- 【智能优化算法】基于融合莱维飞行与黄金正弦的蚁狮算法求解单目标优化问题matlab代码
- 【优化求解】基于精英反向学习带扰动因子的混沌蚁狮算法(EOPCALO)求解单目标优化问题附matlab代码
- MIT-6.828-JOS-lab4:Preemptive Multitasking
- 三角函数---诱导公式
- 数据之美(九):50个精美绝伦的 Infographics(下)
- 万顿思电商:拼多多普通类目有哪些?
- 无人机项目跟踪记录六十五----无线收发模块电路