Android 音频管理器AudioManager
音频管理器AudioManager,通过它可以管理android系统的音量或直接让系统静音,依旧是通过调用getSystemService()方法获取音频管理器AudioManager对象,获取到该对象之后就可以调用它相应的方法来管理系统的音频,首先先热热身,大致了解一下AudioFocus,为什么先说这个呢?因为今天在项目中碰到了这个问题,问题情境描述:手机首先开启一个音乐进入后台播放,然后进入闹钟模块,设置一个闹钟,并为闹钟选择一个铃音,当闹钟时间到时弹出闹钟响应界面同时播放铃声并振动,并要求后台音乐同时暂停播放,等待闹钟铃音响应结束之后,后台音乐又自动重新进入播放状态,描述完毕。
以上情境涉及到两个问题:
1.闹钟时间到并启动响应界面,如何暂停后台正在播放的音乐,并播放闹钟的铃音?
2.闹钟铃音响应结束之后,如何让后台暂停的音乐重新恢复播放状态?
解决以上两个问题的关键就是AudioManager对象的AudioFocus这个音频焦点,首先分析以上问题的第一步:
暂停后台正在播放的音乐并启动播放闹钟的铃音,首先就需要在闹钟模块中通过AudioManager的requestAudioFocus ()方法获取到音频焦点(AudioFocus),获取到音频焦点(AudioFocus)之后,后台音乐就自动进入暂停状态【另一种情况是闹钟铃音和后台同时播放,那么此时可以不对焦点进行操作,只不过此时就听到两种声音,当然在实际情况中就不应该这么做了,用户体验是很重要的,两个应用同时播放声音,那么听起来就很混乱,这是很糟糕的,不过另外一点,如果闹钟铃音设置为静音,那么用户可能希望即使闹钟启动了也并不想中断后台音乐,此时就可以不对音频焦点进行处理,后台音乐就不会暂停】。
再分析以上问题的第二步:
闹钟铃音响应结束之后,后台暂停的音乐重新恢复播放状态,此时只需要调用abandonAudioFocus ()方法释放音频焦点(AudioFocus)就可以了,请求音频焦点requestAudioFocus ()和释放音频焦点abandonAudioFocus ()方法的参数涉及到了AudioManager.OnAudioFocusChangeListener这个监听器,此处可以先放一下,后面将会结合一个例子进行详细说明的,本次想说的就是这个AudioFocus,因为它很重要,后期会结合实例说明一下,好了今天就到这了,该洗洗睡了!!
Android 音频管理器AudioManager的更多相关文章
- AudioManager音频管理器
AudioManager音频管理器提供了如下几种常用方法来控制手机音频: 1.adjustStreamVolume(int StreamType,int direction,int flgs):调整手 ...
- WIN10REALTEL高清音频管理器如何调音?调音无效怎么办?
从win7升级到win10,发现realtel高清音频管理器不能调节高级音响效果了,即使设置也没用. 经过研究后发现是驱动 问题,不是驱动 没有安装,而是可能 没有安装完整,于是下载了驱动精灵,重新安 ...
- [翻译] SoundManager 音频管理器
SoundManager 音频管理器 https://github.com/nicklockwood/SoundManager Purpose SoundManager is a simple cla ...
- 电脑没有声音,显示“未插入耳机或扬声器”,检测不到Realtek高清晰音频管理器
2018-7-16,电脑彻夜未关,早上发现已经死机了.关机重启之后,就发现没有声音了,提示“未插入耳机或扬声器”,并且检测不到Realtek高清晰音频管理器,只能检查到显卡音频输出.首先,音箱在其他电 ...
- Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面
场景 Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...
- Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片
场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...
- Android布局管理器-使用LinearLayout实现简单的登录窗口布局
场景 Android布局管理器-从实例入手学习相对布局管理器的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1038389 ...
- 故障解决 | win10没声音及找不到Realtek高清音频管理器
重装 win10 系统后,电脑没声音,更新驱动以及万不得已下载驱动精灵都没有解决. 后来发现在“硬件和声音”中没有Realtek高清音频管理器,之后找到解决办法如下: 1. 找到Realtek高清音频 ...
- 音频管理器(AudioManager)
MainActivity.java package com.wwj.serviceandboardcast; import android.app.Activity; import android ...
随机推荐
- yii中登录后跳转回登录前请求的页面
当我们请求一个经过权限控制的请求不通过时,会跳转到一个地方请求权限,请求结束后需要跳转回之前的页面.比如我们请求一个需要登录的action,会被跳转到login页面,我们希望登录成功后跳转到我们之前希 ...
- ASP.NET MVC创建的网站
ASP.NET MVC创建的网站 最近在写一个网站,昨天刚写完,由于要和朋友一起测试,但是他电脑上没有环境,所以希望我在自己电脑上部署一下,让他直接通过浏览器来访问来测试,所以从昨晚到今天上午,通 ...
- 利用PhantomJS进行网页截屏
利用PhantomJS进行网页截屏 关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种W ...
- js获取最近几天的日期(转载)
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- python进程池剖析(一)
python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要 ...
- 一些小bug
1.ie6-ie8中是不支持的,需要加上下面这句话: filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70); 2.去除虚线框 a ...
- openGL的使用步骤
使用openGL步骤:1.创建GLSurfaceView对象2.创建GLSurfaceView.renderer实现类.3.设置activity的contentView,以及设置view的render ...
- 如何让Fortran生成不同的随机数
用Fortran生成随机数的方法很简单,就是: call random_seed ()call random_number (rd) 生成随机数组可以这样: do k = 1,10 call rand ...
- SZU:A25 Favorite Number
Judge Info Memory Limit: 32768KB Case Time Limit: 10000MS Time Limit: 10000MS Judger: Number Only Ju ...
- c++对象内存布局的理解
我对c++对象内存布局的理解 引言 结合网上的一些资料,通过自己的一番摸索,得出了一点个人见解.现在写下来,希望与各位同学共同探讨,共同进步. 以下所有代码均是在VS2012下测试. 一个普通的基 ...