Android(安卓)Developers:处理音频输出的硬件
16lz
2021-01-24
用户用很多选择,当它开始享受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意图。无论你什么时候播放音频,注册一个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); }
更多相关文章
- android 非系统APP访问字符设备
- Android(安卓)查看SharedPreferences中的数据
- 【Android(安卓)Developers Training】 51. 序言:打印内容
- android 布局 px or dip
- Audio and Video
- adb devices List of devices attached 为空
- 如何在Android(安卓)Studio和eclipse中查看File Explorer视图(设
- Android(安卓)上层应用读写设备节点
- Android中自动朗读(TTS)的简单使用