用户在播放音乐的时候有多个选择,可以使用内置的扬声器,有线耳机或者是支持A2DP的蓝牙耳机。(补充:A2DP全名是Advanced Audio Distribution Profile 蓝牙音频传输模型协定, A2DP是能够采用耳机内的芯片来堆栈数据,达到声音的高清晰度。有A2DP的耳机就是蓝牙立体声耳机。声音能达到44.1kHz,一般的耳机只能达到8kHz。如果手机支持蓝牙,只要装载A2DP协议,就能使用A2DP耳机了。还有消费者看到技术参数提到蓝牙V1.0 V1.1 V1.2 V2.0——这些是指蓝牙的技术版本,是指通过蓝牙传输的速度,他们是否支持A2DP具体要看蓝牙产品制造商是否使用这个技术。)
检测目前正在使用的硬件设备
选择不同的播放设备会影响应用程序的行为。
可以使用AudioManager来查询某个音频是输出到扬声器、有线耳机还是蓝牙上。代码如下:
if (am.isBluetoothA2dpOn()) {
// Adjust output for Bluetooth.
} else if (am.isSpeakerphoneOn()) {
// Adjust output for Speakerphone.
} else if (am.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);
}
视频讲解:http://www.eyeandroid.com/thread-15915-1-1.html
分享到:
相关推荐
在进行数据包络分析(Data Envelopment Analysis, DEA)研究时,经常需要面对的问题之一是如何处理非期望产出(undesirable outputs)。传统DEA模型在处理生产效率分析时通常假设决策单元(Decision Making Units, ...
音频地环回问题详解 音频地环回是音频系统中常见的问题,主要由于不同设备通过不同的路径连接到共同的地线而产生。这种多路径接地方式实际上就像一个天线,会拾取并引入干扰。当地环回发生时,地线(通常是屏蔽层)...
这篇PPT课件是针对八年级英语教学的内容,主题为“应对困难”(Dealing with trouble)。通过一系列的填空练习和情景模拟,旨在帮助学生掌握如何在不同情况下正确处理问题,尤其是面对紧急情况时的应对策略。以下是...
There are chapters dealing with all the important aspects of the Android platform, including GUI design, file- and data-handling, coping with phone calls, multimedia apps, interaction with location ...
《图像处理:处理纹理》是图像处理领域内一部权威性的著作,由Maria Petrou和Pedro Garcia Sevilla两位学者共同编写,他们分别来自英国伦敦帝国理工学院和西班牙卡斯特利翁的Jaume I大学。该书由全球知名的学术出版...
R scripts for dealing with mturk
通过参与"Dealing With Stress"的工作坊,我们可以学习到如何识别压力,理解其来源,并掌握一系列实用的应对策略,以更健康的方式生活和学习,提升生活质量。记住,处理压力是每个人都需要面对的人生课题,不必羞于...
Chapter 3 Dealing with trouble测试题2.doc
"Dealing with Hard People"这一主题,虽然看似不直接涉及技术,但它实际上对提升工作效率和团队协作至关重要。在这个知识领域,我们将深入探讨如何在复杂的职场环境中处理人际关系,特别是那些难缠的人物。 首先,...
- - 与人交往中注意的一些容易被跳过的细节.以及基础理论分析与人交往出现的情况.
- Fixed : Issue with dealing with FTP downloads & caching Update : TAdvTaskDialog v1.9.2.0 - New : FooterTextColor property added to control footer text color for non native dialogs Update : ...
Dealing with Different Hardware Writing and Using Parcelables Responding to URLs Plugin Patterns PackageManager Tricks Remote Services and the Binding Pattern Advanced Manifest Tips Miscellaneous ...
Dealing with Different Hardware Writing and Using Parcelables Responding to URLs App Shortcuts PackageManager Tricks Remote Services and the Binding Pattern Advanced Manifest Tips Miscellaneous ...
这篇PPT学习教案是针对八年级英语的一课,主题为"Dealing with trouble",旨在帮助学生学习如何处理各种突发状况。以下是对其中涉及的知识点的详细解释: 1. **词汇与短语**: - **hurry**:匆忙,表示动作迅速。 ...
处理不均衡数据_(深度学习)!_Dealing_with_imbalanced_data_(deep_learning)
Dealing with Different Hardware and Software Availability Optimizing UI Performance with Strict Mode Chapter 19: Monetizing, Promoting, and Distributing Applications Signing and Publishing ...
标题中的"ASTM E178 - 21"指的是美国材料与...通过阅读提供的"ASTM E178 - 21 Standard Practice for Dealing With Outlying Observations - 完整英文版(11页).pdf"文件,可以深入学习这一标准的细节和具体实施步骤。
在Microsoft Foundation Class (MFC)库中,"MFC dealing with window size_IntheFrame_MFC实例_" 主题涉及如何在框架窗口(Frame Window)中管理子窗口(Subwindow)的大小。MFC是C++的一个类库,它为Windows应用...
3.2 Dealing with Input from a Scanned Image 3.3 Image Compression 3.3.1 Image Compression Example 3.4 Edge Detection 3.5 Skeletonizing 3.5.1 Thinning Example 3.6 Dealing with Input From...