Core Audio: работа с динамиком, можно ли направить на внутренний динамик - AVAudioSessionPortBuiltInReceiver (не на громкоговоритель)

Согласно документации, нет документации о маршрутизации или даже получении сведений о порте для «AVAudioSessionPortBuiltInReceiver». (Примечание: прочтите еще раз, дело не в этом порту AVAudioSessionPortBuiltInSpeaker).

Как я выяснил, это возможно только overrideOutputAudioPort, может быть сделано только для

    public enum AVAudioSessionPortOverride : UInt {
    case None
    case Speaker
    }

Вопрос в том, есть ли возможность воспроизводить звук через:

public let AVAudioSessionPortBuiltInReceiver: String /* The speaker you hold to your ear when on a phone call */

Изменить: использование класса MPVolumeView (RouteButton) выводит (маршрутизацию) из AVAudioSessionPortBuiltInReceiver возможно, можно ли добиться того же ?.


person Kumar KL    schedule 22.02.2016    source источник


Ответы (2)


Если вы настроите аудиосеанс для воспроизведения и записи (и оставите микширование с другими выключенным), маршрут по умолчанию на iPhone станет для воспроизведения звука через меньший динамик (не более громкий динамик внизу) или из него. подключенная гарнитура, если пользователь подключает гарнитуру.

person hotpaw2    schedule 22.02.2016
comment
Спасибо за ваш ответ. Я использовал ту же категорию, но все равно она воспроизводится через громкоговоритель. - person Kumar KL; 23.02.2016
comment
Знаете ли вы, есть ли шанс получить сведения о портах встроенных динамиков при подключенной гарнитуре. - person Kumar KL; 23.02.2016

Apple называет их «ресивер» (то есть верхний наушник) и динамик.

для переключения между этими двумя:

final private func changed(overrideNone: Bool) {

        let audioSession = AVAudioSession.sharedInstance()
        var override : AVAudioSessionPortOverride = .none

        if overrideNone{
                color = UIColor.red
                override = .none
            }
            else{
                color = UIColor.yellow
                override = .speaker
            }

            self.view.backgroundColor = color

            do {
                    try audioSession.overrideOutputAudioPort(override)
            } catch _ {

            }   
        }

Если вы звоните с false, вы будете играть через override = .speaker.

так нижний динамик.

PS НЕ работает с iPad, модели от июня 2017 г.

Apple заявляет:

https://developer.apple.com/documentation/avfoundation/avaudiosessionportbuiltinreceiver

AVAudioSessionPortBuiltInReceiver (наушник ..)

Выход на динамик, который нужно держать возле уха. .. Обычно этот динамик доступен только на устройствах iPhone.

(цвета для отладки ...)

person ingconti    schedule 11.06.2017