Сеилханова Р. Б


Взаимодействие с оборудованием для воспроизведения аудио



бет68/112
Дата07.01.2022
өлшемі11,65 Mb.
#17516
түріПрограмма дисциплины
1   ...   64   65   66   67   68   69   70   71   ...   112

Взаимодействие с оборудованием для воспроизведения аудио


Пользователи имеют возможность выбора при прослушивании аудио на 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);

}



Достарыңызбен бөлісу:
1   ...   64   65   66   67   68   69   70   71   ...   112




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет