Android官方开发文档Training系列课程中文版:管理音频播放之音频输出硬件的处理
来源:互联网 发布:最新专业网络投资理财 编辑:程序博客网 时间:2024/04/29 18:26
原文地址:http://android.xsoftlab.net/training/managing-audio/audio-output.html
当用户使用Android设备享受音频时,它有多重的可选择替代方案。大多数的设备内置了一套音频系统:扬声器以及有线耳机的耳机插孔,也有很多功能蓝牙连接,以及对A2DP音频的支持。
检查所使用的硬件类型
APP的工作方式取决了音频输出的硬件类型。
你可以通过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?}
处理音频硬件输出的变动
当耳机被拔出设备时,或者蓝牙设备断开连接时,那么音频流会自动的被重新到内置的扬声器设备上。如果你在一个很高的音量下听音乐,那么这样的话就会有一个很吵闹的体验。
幸运的是,当事件发生时,Android系统会广播一个ACTION_AUDIO_BECOMING_NOISY意图。最佳的实践方式就是在播放音频的时候,对这个意图注册一个BroadcastReceiver来监听它。在音乐播放器的例子中,用户通常会希望暂停音乐的播放。然而如果在进行游戏,那么你可以选择大幅度的降低音量。
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);}
0 0
- Android官方开发文档Training系列课程中文版:管理音频播放之音频输出硬件的处理
- Android官方开发文档Training系列课程中文版:管理音频播放之管理音频焦点
- Android官方开发文档Training系列课程中文版:管理音频播放之控制APP的音量与播放
- Android官方开发文档Training系列课程中文版:手势处理之ViewGroup的事件管理
- Android官方开发文档Training系列课程中文版:管理Activity的生命周期之Activity的重建
- Android官方开发文档Training系列课程中文版:管理Activity的生命周期之启动一个Activity
- Android官方开发文档Training系列课程中文版:手势处理之记录手指移动的轨迹
- Android官方开发文档Training系列课程中文版:键盘输入处理之指定输入的类型
- Android官方开发文档Training系列课程中文版:键盘输入处理之控制输入法的显示方式
- Android官方开发文档Training系列课程中文版:后台服务之响应IntentService的处理结果
- Android官方开发文档Training系列课程中文版:键盘输入处理之处理键盘按键
- Android官方开发文档Training系列课程中文版:高效显示位图之管理位图内存
- Android官方开发文档Training系列课程中文版:网络操作之网络管理
- Android官方开发文档Training系列课程中文版:管理系统UI之变暗系统条
- Android官方开发文档Training系列课程中文版:管理系统UI之隐藏状态条
- Android官方开发文档Training系列课程中文版:手势处理之监测通用手势
- Android官方开发文档Training系列课程中文版:手势处理之滚动动画及Scroller
- Android官方开发文档Training系列课程中文版:手势处理之拖拽或缩放
- Python元组
- Eclipse GEF4 Common
- C++ Stacks(堆栈)
- Git版本控制简易入门
- v4l2摄像头移植mjpg_streamer笔记
- Android官方开发文档Training系列课程中文版:管理音频播放之音频输出硬件的处理
- 快速熟悉docker的教程
- ZOJ 3229 有上下界的有汇源的最大流
- Git学习笔记
- win8.1安装VS2015提示安装补丁解决办法
- 表示数值的字符串
- Spring Boot——开发新一代Spring Java应用
- D版力控加密狗使用有感
- UVA 1349Optimal Bus Route Design(网络流)