【Android Developers Training】 46. 处理音频外放设备
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。
原文链接:http://developer.android.com/training/managing-audio/audio-focus.html
当用户希望从Android设备欣赏音频时,他将会有狠多选择。大多数设备有内置的喇叭,以及有线耳机的插孔,还有很多支持A2DP音频的蓝牙连接设备。
一). 检查哪个硬件在被使用
你的应用是如何表现的可能会被外放被引导至什么硬件设备所影响。
你可以通过查询AudioManager来确定现在的音频是被引导至扩音器,有线耳机还是蓝牙设备。如下所示:
- if (isBluetoothA2dpOn()) {
- // Adjust output for Bluetooth.
- } else if (isSpeakerphoneOn()) {
- // Adjust output for Speakerphone.
- } else if (isWiredHeadsetOn()) {
- // Adjust output for headsets
- } else {
- // If audio plays and noone can hear it, is it still playing?
- }
二). 处理音频外放设备的改变
当没有插入耳机,也没有蓝牙设备连接,音频流会自动的引导至扩音器。如果你听音乐时喜欢吧音量调的像我一样高,那么你可能会被吵闹声惊吓到。
幸运的是,当这种情况发生时,系统会广播一个ACTION_AUDIO_BECOMING_NOISY行为的intent。注册一个广播接收器(BroadcastReceiver)来监听这一intent是一个很好的习惯,不管你是否在播放音乐。对于音乐播放器来说,用户一般期望播放被停止,二对于游戏来说,你可能会选择显著降低音量。
- private class NoisyAudioStreamReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {
- // Pause the playback
- }
- }
- }
- private IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
- private void startPlayback() {
- registerReceiver(myNoisyAudioStreamReceiver(), intentFilter);
- }
- private void stopPlayback() {
- unregisterReceiver(myNoisyAudioStreamReceiver);
- }
【Android Developers Training】 46. 处理音频外放设备的更多相关文章
- 【Android Developers Training】 43. 序言:管理音频播放
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 45. 控制音频焦点
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 3. 构建一个简单UI
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 108. 使用模拟定位进行测试
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 107. 认知用户当前的行为
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 106. 创建并检测地理围栏
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 98. 获取联系人列表
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 83. 实现高效网络访问来优化下载
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 63. 定义形状
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
随机推荐
- Java中线程的实现:
Java中线程的实现: 一.线程简介: 实现的两种方式为: 1.Thread类 2.Runnable接口 都在java.lang中 都有共通的方法:public void run() 二.线程常用方法 ...
- 深入理解Activity的启动模式
众所周知,当我们多次启动同一个Activity时,会创建多个该Activity的实例,系统会按照先进后出的原则,将它们一一放进任务栈中,然后我们按back键,系统就会将栈顶的Activity移除栈,直 ...
- Enum in Java
1. Enum Class public enum ContainerPropertyConstants { RETAILER("retailer"), LINED("i ...
- Struts2 Handle 404 error page and wrong action
1. To handle 404 not found yourself, just add this code to your web.xml <error-page> <error ...
- 《安卓网络编程》之第四篇 处理URL地址
在Android手机系统中,可以通过URL地址获取网络资源.在URL类的众多方法中,可以使用openStream()方法来读取该URL资源的输入流InputStream.在此方法的基础上可以引申出很多 ...
- 前端架构之路:使用Vue.js开始第一个项目
Vue.js做为目前前端最热门的库之一,为快速构建并开发前端项目多了一种思维模式.本文通过一个简单的实例开始上手Vue.js开发. 一.技术准备 笔者建议在开始项目前,对以下两个技术点进行了解. ...
- cf255C Almost Arithmetical Progression
C. Almost Arithmetical Progression time limit per test 1 second memory limit per test 256 megabytes ...
- Akka(2):Actor生命周期管理 - 监控和监视
在开始讨论Akka中对Actor的生命周期管理前,我们先探讨一下所谓的Actor编程模式.对比起我们习惯的行令式(imperative)编程模式,Actor编程模式更接近现实中的应用场景和功能测试模式 ...
- hadoop2.7.2单机与伪分布式安装
环境相关 系统:CentOS 6.8 64位 jdk:1.7.0_79 hadoop:hadoop 2.7.2 安装java环境 详见:linux中搭建java开发环境 创建hadoop用户 # 以r ...
- 【Netty】WebSocket
一.前言 前面学习了codec和ChannelHandler之间的关系,接着学习WebSocket. 二.WebSocket 2.1. WebSocket介绍 WebSocket协议允许客户端和服务器 ...