iPhone:在插入耳机的情况下强制音频输出到扬声器

时间:2016-09-05 19:27:59

标签: ios iphone audio speaker headphones

似乎可以接受的方法是将AV类别设置为AVAudioSessionCategoryPlayAndRecord,然后设置属性kAudioSessionOverrideAudioRoute_Speaker。我正在使用AVAudioSessionCategoryPlayback类别,因为它在没有插入耳机的情况下为我提供了适当的音量。当我将类别设置为AVAudioSessionCategoryPlayAndRecord时,通过未插入耳机的扬声器播放的音频非常柔和。我无法通过插入带有EITHER AV类别的耳机的扬声器获得所需的播放行为。

这是我的代码,其类别设置为AVAudioSessionCategoryPlayback:

    AVAudioSession* session = [AVAudioSession sharedInstance];
    NSError* error  = nil;
    BOOL success = [session setActive: YES  error: &error];
    if (success)
        success     = [session setCategory: AVAudioSessionCategoryPlayback  error: &error];

    // To allow ipod music to play
    UInt32 doSetProperty = 1;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof (doSetProperty), &doSetProperty);

    AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange,            hardwareRoutePropertyListener,  nil);

    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
    AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,
                            sizeof (audioRouteOverride),
                            &audioRouteOverride
                            );

0 个答案:

没有答案