Пользователи имеют возможность выбора при прослушивании аудио на Android устройствах. Большинство устройств имеют встроенный динамик, выход для наушников, поддержку A2DP аудио и т.д.
Поведение приложения может зависить от устройства, на которое направлен вывод аудио контента. Можно запросить AudioManager определить какое устройство используется для вывода аудио, динамик мобильного устройства, проводные наушники или Bluetooth устройство.
if (isBluetoothA2dpOn()) {
//адаптировать вывод для Bluetooth
} else if (isSpeakerphoneOn()) {
//адаптировать вывод для динамика устройства
} else if (isWiredHeadsetOn()) {
// адаптировать вывод для наушников
} else {
//никто его не слышит, аудио все еще играет?
}
Когда наушники отсоединяются или Bluetooth устройство становится недоступным, аудио поток автоматически перенаправляется на встроенный динамик. Если громкость воспроизведения высокая, то неожиданный шум из динамиков может неприятно удивить, особенно окружающих.
К счастью система рассылает сообщение ACTION_AUDIO_BECOMING_NOISY, когда это происходит. Хорошей практикой является привычка регистрировать приемник широковещательных сообщений для получения этого сообщения, каждый раз как приложение воспроизводит аудио. В случае с воспроизведением музыки пользователи обычно ожидают приостановки воспроизведения, в случае с играми ожидается существенное понижение уровня громкости.
private class NoisyAudioStreamReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {
// приостановить воспроизведение
}
}
}
private IntentFilter intentFilter =
new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
private void startPlayback() {
registerReceiver(myNoisyAudioStreamReceiver, intentFilter);
}
private void stopPlayback() {
unregisterReceiver(myNoisyAudioStreamReceiver);
}
Достарыңызбен бөлісу: |