在iOS中创建的应用程序通过扬声器强制音频输出,但在应用程序处于后台时不起作用

时间:2016-02-27 13:27:40

标签: ios objective-c audio avaudiosession

我想实现,当我在iPhone中插入耳机/耳机并播放任何音乐时,音乐应该使用扬声器而不是耳机播放。 所以使用下面的代码,当我的应用程序在前台时工作正常。但是,当我的应用程序进入后台时,此代码无效。

  • 我想在3个案例中实现此功能
    1. 当应用程序在前台时。
    2. 申请时在后台。
    3. 当应用程序从背景中删除时。

请给我解决方案。

我使用了以下代码,

 + (void) initAudioSessionRouting{

    // Called once to route all audio through speakers, even if something's plugged into the headphone jack
    static BOOL audioSessionSetup = NO;
    if (audioSessionSetup == NO) {

        // set category to accept properties assigned below
        NSError *sessionError = nil;
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error: &sessionError];

        // Doubly force audio to come out of speaker
        UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
        AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);

        // fix issue with audio interrupting video recording - allow audio to mix on top of other media
        UInt32 doSetProperty = 1;
        AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(doSetProperty), &doSetProperty);

        // set active
        [[AVAudioSession sharedInstance] setDelegate:self];
        [[AVAudioSession sharedInstance] setActive: YES error: nil];

        // add listener for audio input changes
        AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange, onAudioRouteChange, nil );
        AudioSessionAddPropertyListener (kAudioSessionProperty_AudioInputAvailable, onAudioRouteChange, nil );

    }

    // Force audio to come out of speaker
    [[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
    // set flag
    audioSessionSetup = YES;}

提前致谢

0 个答案:

没有答案