Приложение SpeakHere Диктофон Не работают динамики - iOS

Я использую в своем проекте пример кода SpeakHere, предоставленный Apple.

Как включить динамики, если наушники не подключены?

Я знаю, что могу перезаписать маршрут, используя следующий код ..

OSStatus error;
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
error = AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof (audioRouteOverride), &audioRouteOverride);
if (error) printf("couldn't set audio speaker!");

Но я не хочу этого, потому что, если наушники подключены, звук должен исходить из них ...


person Tim Tuffley    schedule 10.07.2013    source источник
comment
Посмотрите на ответ upvote-17 в заголовке stackoverflow.com/questions/3728781/   -  person    schedule 16.07.2013


Ответы (2)


Скорее всего, это то, что вы ищете:

    UInt32 overrideValue = 1;
    AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(overrideValue), &overrideValue);

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

person Lewis Gordon    schedule 16.07.2013
comment
да .. работал неплохо .. но на этот раз, даже если устройство не работает, звук продолжает выходить из динамиков .. - person Tim Tuffley; 17.07.2013
comment
Никогда не замечал этого раньше, но приложения Apple делают то же самое - музыкальный проигрыватель и голосовая заметка продолжают играть в беззвучном режиме. - person Lewis Gordon; 17.07.2013
comment
Спасибо за ответ .. Не могли бы вы проверить мой другой вопрос относительно примера SpeakHere .. stackoverflow.com/questions/17691616/ - person Tim Tuffley; 17.07.2013
comment
Работа в беззвучном режиме фактически контролируется категорией аудиосеанса. Воспроизведение, воспроизведение и запись отменяют беззвучный режим, поскольку основной функцией приложения является воспроизведение звука. См. Документы для получения дополнительной информации. - person Lewis Gordon; 17.07.2013

вот метод обнаружения наушников / аксессуаров, украденный / заимствованный отсюда Определить, подключены ли к устройству iOS наушники (не микрофон)

используя это и оператор if с вашим методом ниже, вы получите свои результаты.

 - (BOOL)isHeadsetPluggedIn {
    UInt32 routeSize = sizeof (CFStringRef);
    CFStringRef route;

    OSStatus error = AudioSessionGetProperty (kAudioSessionProperty_AudioRoute,
                                              &routeSize,
                                              &route);

    /* Known values of route:
     * "Headset"
     * "Headphone"
     * "Speaker"
     * "SpeakerAndMicrophone"
     * "HeadphonesAndMicrophone"
     * "HeadsetInOut"
     * "ReceiverAndMicrophone"
     * "Lineout"
     */

    if (!error && (route != NULL)) {

        NSString* routeStr = (NSString*)route;

        NSRange headphoneRange = [routeStr rangeOfString : @"Head"];

        if (headphoneRange.location != NSNotFound) return YES;

    }

    return NO;
}
person rezand    schedule 12.07.2013