2013-07-10 3 views
1

Я использую пример кода, представленный Apple в моем проекте.SpeakHere Приложение для диктофона Speakers not working -iOS

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

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

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

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

+0

Посмотрите на ответ «upvote-17» по адресу http://stackoverflow.com/questions/3728781/detect-if-headphones-not-microphone-are-plugged-in-to-an-ios-device –

ответ

1

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

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

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

+0

да .. работала неплохо ... но на этот раз, даже если устройство тихо, звук выходит из громкоговорителей. –

+0

Никогда не замечал этого раньше, но приложения Apple делают то же самое - музыкальный проигрыватель и голосовая заметка продолжают играть беззвучно Режим. –

+0

Спасибо за ваш ответ. Можете ли вы проверить мой другой вопрос относительно примера SpeakHere .. http://stackoverflow.com/questions/17691616/speakhere-voice-recorder-fails-after-avaudioplayer-in-ios –

1

здесь наушники/аксессуар обнаружить метод украденный/заимствованный отсюда Detect if headphones (not microphone) are plugged in to an iOS device

с помощью этого и если оператор с методом ниже поможет вам результаты.

- (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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^