笔记61 | Android兼容音频输出设备的学习

兼容音频输出设备

编写:kesenhoo

当用户想要通过Android设备欣赏音乐的时候,他可以有多种选择,大多数设备拥有内置的扬声器,有线耳机,也有其它很多设备支持蓝牙连接,有些甚至还支持A2DP蓝牙音频传输模型协定。(译注:A2DP全名是Advanced Audio Distribution Profile 蓝牙音频传输模型协定! A2DP是能够采用耳机内的芯片来堆栈数据,达到声音的高清晰度。有A2DP的耳机就是蓝牙立体声耳机。声音能达到44.1kHz,一般的耳机只能达到8kHz。如果手机支持蓝牙,只要装载A2DP协议,就能使用A2DP耳机了。还有消费者看到技术参数提到蓝牙V1.0 V1.1 V1.2 V2.0 - 这些是指蓝牙的技术版本,是指通过蓝牙传输的速度,他们是否支持A2DP具体要看蓝牙产品制造商是否使用这个技术。来自百度百科)

检测目前正在使用的硬件设备(Check What Hardware is Being Used)

使用不同的硬件播放声音会影响到应用的行为。可以使用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?
}

处理音频输出设备的改变(Handle Changes in the Audio Output Hardware)

当有线耳机被拔出或者蓝牙设备断开连接的时候,音频流会自动输出到内置的扬声器上。假设播放声音很大,这个时候突然转到扬声器播放会显得非常嘈杂。

幸运的是,系统会在这种情况下广播带有ACTIONAUDIOBECOMING_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);
}

原文发布于微信公众号 - 项勇(xiangy_life)

原文发表时间:2018-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏华章科技

第一代程序员王小波

喜欢读书的人,对王小波都不陌生,他是中国最富创造性的作家之一,他是中国近半世纪的苦难和荒谬所结晶出来的天才,他英年早逝。他的作品对我们生活中所有的荒谬和苦难作出...

872
来自专栏猫哥学前班

买苹果设备需要注意哪些坑

明天(6月14日)凌晨 1 点,苹果将会举行 WWDC 夏季新品发布会,如果 Mac 系列有更新的话,就是购入的最佳时机。即使没有更新,相信在九、十月的秋季发布...

3659
来自专栏大数据文摘

70多个网站让你免费获取大数据存储库

5308
来自专栏机器人网

无人机软件架构知多少?

AIAA的会议论文(Infotech@Aerospace 2012),从计算机角度阐述了无人机软件架构,由易科机器人实验室(ExBot.net)分享。 文献信息...

3819
来自专栏顶级程序员

你可能不信,我看pornhub是为了拯救大熊猫和乳腺癌,还有学python

源 / 顶级程序员 文 / 奶糖 China NO. 1! 这一次,我们伟大祖国再次拿下了一个世界第一。 我们成为全球最大色情网站Pornhub,在线观...

4.9K7
来自专栏华章科技

魔性程序员喊麦:一人我编程累,献给所有的IT精英们

投稿和反馈请发邮件至holly0801@163.com。转载大数据公众号文章,请向原文作者申请授权,否则产生的任何版权纠纷与大数据无关。

933
来自专栏程序人生

red,不红不专,但性感

red lang 前两天发布 0.6.3 了。osx GUI 终于得到了支持。 这事,连 hacker news 上都没掀出多少波澜。帖子在近二百多顶后,就渐渐...

35012
来自专栏腾讯数据中心

浅谈数据中心油罐清洗

一、油罐清洗必要性 机房柴油发电机所用油一般为柴油。柴油除了在柴发的日用油箱储存,供本油机使用外,机房的备用柴油一般都储存在几十立方的油罐中。油罐中的柴油包含一...

3055
来自专栏新智元

【上帝的孤独程序员】TempleOS创作者去世

Terry Davis是TempleOS操作系统的开发者。现在主流的操作系统都是集众人之力完成的,而TempleOS彻彻底底是由他个人独立开发。

702
来自专栏黑白安全

电影看多了! “00后”小伙做“黑客”刚出手就被抓

最近,常州溧阳城南派出所接到辖区某学校报警,说学校的计算机服务器被黑客种植了勒索病毒,导致计算机系统都无法打开。

1234

扫码关注云+社区