音频管理器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. java-list-remove()用法浅析 解决java list remove() 数据不对的问题

    在java中对list进行操作很频繁,特别是进行list启遍历,这些操作我们都会,也很熟悉,但是对java中list进行删除元素,remove list中的元素就不怎么熟悉了吧,可以说很陌生,是实际操 ...

  2. Android分析应用程序的构建过程

    为了方便Android应用开发要求我们Androidproject编制和包装有了更深入的了解,例如,我们知道这是做什么的每一步,境和工具.输入和输出是什么.等等. 在前文<命令行下Android ...

  3. 《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 概览

    MonkeyRunner没有引进Junit等单元测试框架,所以没有相应的断言方法来去对测试结果进行判断. 但MonkeyRunner提出了另外一个判断执行结果成功与否的方法,那就是通过截图比对.毕竟M ...

  4. API接口开发简述示例

    作为最流行的服务端语言PHP(PHP: Hypertext Preprocessor),在开发API方面,是很简单且极具优势的.API(Application Programming Interfac ...

  5. 让低版本的IE浏览器 强制渲染为IE8 或者 以上 浏览器模式

    让低版本的IE浏览器 强制渲染为IE8 或者 以上 浏览器模式 那么就要用下面的方法:让网页兼容ie9 复制代码 代码如下: <!–[if lte IE 8]> <meta http ...

  6. 快速构建Windows 8风格应用19-基础控件II

    原文:快速构建Windows 8风格应用19-基础控件II 本篇博文接着上篇博文<快速构建Windows 8风格应用18-基础控件I>介绍开发Windows 8风格应用中常用控件. Sli ...

  7. AjaxPro使用说明文档

    ajaxpro下载地址 AjaxPro使用说明     1 目录     2 修改历史纪录     3 1.什么是Ajax     4 2.为什么使用Ajax     4 3.Ajax应用场景     ...

  8. Mysql插入内容过长(Packet for query is too large)

    原文:Mysql插入内容过长(Packet for query is too large) 这个以前一直没有碰到过,一次性向Mysql数据库插入内容过长的话会出现这个问题,解决办法就是在Mysql配置 ...

  9. JSON之FastJson

    FastJson是什么? 从网上查到--- 官网地址:http://code.alibabatech.com/wiki/display/FastJSON/Overview(已关闭) FastJSOn是 ...

  10. SpringMVC类型转换、数据绑定

    SpringMVC类型转换.数据绑定详解[附带源码分析] 目录 前言 属性编辑器介绍 重要接口和类介绍 部分类和接口测试 源码分析 编写自定义的属性编辑器 总结 参考资料 前言 SpringMVC是目 ...