音频管理器AudioManager,通过它可以管理android系统的音量或直接让系统静音,依旧是通过调用getSystemService()方法获取音频管理器AudioManager对象,获取到该对象之后就可以调用它相应的方法来管理系统的音频,首先先热热身,大致了解一下AudioFocus,为什么先说这个呢?因为今天在项目中碰到了这个问题,问题情境描述:手机首先开启一个音乐进入后台播放,然后进入闹钟模块,设置一个闹钟,并为闹钟选择一个铃音,当闹钟时间到时弹出闹钟响应界面同时播放铃声并振动,并要求后台音乐同时暂停播放,等待闹钟铃音响应结束之后,后台音乐又自动重新进入播放状态,描述完毕。

以上情境涉及到两个问题:

1.闹钟时间到并启动响应界面,如何暂停后台正在播放的音乐,并播放闹钟的铃音?

2.闹钟铃音响应结束之后,如何让后台暂停的音乐重新恢复播放状态?

解决以上两个问题的关键就是AudioManager对象的AudioFocus这个音频焦点,首先分析以上问题的第一步:

暂停后台正在播放的音乐并启动播放闹钟的铃音,首先就需要在闹钟模块中通过AudioManager的requestAudioFocus ()方法获取到音频焦点(AudioFocus),获取到音频焦点(AudioFocus)之后,后台音乐就自动进入暂停状态【另一种情况是闹钟铃音和后台同时播放,那么此时可以不对焦点进行操作,只不过此时就听到两种声音,当然在实际情况中就不应该这么做了,用户体验是很重要的,两个应用同时播放声音,那么听起来就很混乱,这是很糟糕的,不过另外一点,如果闹钟铃音设置为静音,那么用户可能希望即使闹钟启动了也并不想中断后台音乐,此时就可以不对音频焦点进行处理,后台音乐就不会暂停】。

再分析以上问题的第二步:

闹钟铃音响应结束之后,后台暂停的音乐重新恢复播放状态,此时只需要调用abandonAudioFocus ()方法释放音频焦点(AudioFocus)就可以了,请求音频焦点requestAudioFocus ()和释放音频焦点abandonAudioFocus ()方法的参数涉及到了AudioManager.OnAudioFocusChangeListener这个监听器,此处可以先放一下,后面将会结合一个例子进行详细说明的,本次想说的就是这个AudioFocus,因为它很重要,后期会结合实例说明一下,好了今天就到这了,该洗洗睡了!!

Android 音频管理器AudioManager的更多相关文章

  1. AudioManager音频管理器

    AudioManager音频管理器提供了如下几种常用方法来控制手机音频: 1.adjustStreamVolume(int StreamType,int direction,int flgs):调整手 ...

  2. WIN10REALTEL高清音频管理器如何调音?调音无效怎么办?

    从win7升级到win10,发现realtel高清音频管理器不能调节高级音响效果了,即使设置也没用. 经过研究后发现是驱动 问题,不是驱动 没有安装,而是可能 没有安装完整,于是下载了驱动精灵,重新安 ...

  3. [翻译] SoundManager 音频管理器

    SoundManager 音频管理器 https://github.com/nicklockwood/SoundManager Purpose SoundManager is a simple cla ...

  4. 电脑没有声音,显示“未插入耳机或扬声器”,检测不到Realtek高清晰音频管理器

    2018-7-16,电脑彻夜未关,早上发现已经死机了.关机重启之后,就发现没有声音了,提示“未插入耳机或扬声器”,并且检测不到Realtek高清晰音频管理器,只能检查到显卡音频输出.首先,音箱在其他电 ...

  5. Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面

    场景 Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

  6. Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片

    场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...

  7. Android布局管理器-使用LinearLayout实现简单的登录窗口布局

    场景 Android布局管理器-从实例入手学习相对布局管理器的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1038389 ...

  8. 故障解决 | win10没声音及找不到Realtek高清音频管理器

    重装 win10 系统后,电脑没声音,更新驱动以及万不得已下载驱动精灵都没有解决. 后来发现在“硬件和声音”中没有Realtek高清音频管理器,之后找到解决办法如下: 1. 找到Realtek高清音频 ...

  9. 音频管理器(AudioManager)

    MainActivity.java package com.wwj.serviceandboardcast;   import android.app.Activity; import android ...

随机推荐

  1. TreeView的绑定

    近期遇到了TreeView的数据库绑定问题,确实是弄了我好几天,特别是多级节点的分步绑定,最開始不分步,发现所有载入页面都卡爆了,真心让人头疼.所以放出来,给须要的朋友看看,以免大家走冤枉路. 1.仅 ...

  2. 开发者需要了解的WebKit

    2013-3-22 22:37| 发布者: sxwgf| 查看: 575| 评论: 0|来自: infoq 摘要: Paul Irish是著名的前端开发工程师,同时他也是Chrome开发者关系团队成员 ...

  3. ubuntu忘记密码,无法sudo的解决方法

    想要安装一个sublime Text Editor,发现需要root权限,而且sudo用户的密码输进去没有作用!@ubuntu 14.04 LTS 这个时候怎么办呢? 打开终端,在终端中使用 sudo ...

  4. jquery 产品查看放大镜组件

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. 通过js实现在页面中添加音乐

    代码如下!兼容IE // JavaScript Document function autoPlay(){//自动播放 var myAuto = document.getElementById('my ...

  6. sbt公布assembly解决jar包冲突 deduplicate: different file contents found in the following

    一个.问题定义 近期使用sbt战斗assembly发生故障时,包,在package什么时候,发生jar包冲突/文件冲突,两个相同class来自不同jar包classpath内心冲突. 有关详细信息:我 ...

  7. 自己写CPU第九阶段(5)——实现负载存储指令2(改变运行阶段)

    我们会继续上传新书<自己动手写CPU>.今天是第42篇.我尽量每周四篇,可是近期已经非常久没有实现这个目标了,一直都有事.不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9% ...

  8. Android 简介:Android SDK 和开发框架简介

    理解Android软件栈: 库: C/C++库(libc,SSL) Android 运行时可以让Android手机从本质上与一个移动Linux实现区分开来.Dalvik并不是Java虚拟机,是一个基于 ...

  9. 动态操作表格行(兼容IE、火狐)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Role Object(角色对象)

    Role Object(角色对象) 索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Role Object 的示例实现. 意图 通过明确地附加角色对象到目标对象中,以使对象可以 ...