用户可以通过内置的speaker,耳机等很多途径输出audio.
可以用AudioManger来决定是哪里输出audio
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?
}
当耳机拔下或者蓝牙设备连接失效是,audio stream 会自动从内置的speaker输出.这个过程肯定会产生噪音.
当这种情况发生是系统会发送一个ACTION_AUDIO_BECOMING_NOSIY的广播,你可以监听这个广播来暂停音乐,或者降低游戏是的声音.
code 如下:
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);
}
可以用AudioManger来决定是哪里输出audio
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?
}
当耳机拔下或者蓝牙设备连接失效是,audio stream 会自动从内置的speaker输出.这个过程肯定会产生噪音.
当这种情况发生是系统会发送一个ACTION_AUDIO_BECOMING_NOSIY的广播,你可以监听这个广播来暂停音乐,或者降低游戏是的声音.
code 如下:
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);
}