【问题标题】:Playing sequence of sound reminders in background pausing music and not stopped by other sounds在后台播放声音提醒序列暂停音乐并且不被其他声音停止
【发布时间】:2013-07-11 18:09:12
【问题描述】:

我想为 iPhone 编写应用程序,它可以播放音频提醒序列并与其他应用程序产生的声音进行良好的交流。

更具体地说,我想达到以下几点:
1.每10秒播放一次声音提醒。 (这是为了简化问题,在我的应用程序中有一个时间序列,指定何时播放提醒)
2. 声音应该在后台工作。
3.如果音乐播放应该暂停,我的应用程序应该产生音频提醒,然后音乐恢复。
4. 如果其他应用程序开始使用声音,我的提醒序列应该会继续工作(例如,我的应用程序运行后开始播放音乐或来电)。

通过下面的代码,我能够实现第 1 点和第 2 点。但我不知道如何同时实现 3. 和 4.。

- (void)viewDidLoad
{
    [super viewDidLoad];
    audioSession = [AVAudioSession sharedInstance];
}

// Following function is used to start reproducing sounds and also called
// for the next sounds
- (IBAction)soundPlayShort:(id)sender
{
    NSURL * url = @"reminder sound url here";

    // soundPlayer is defined in .h file as AVAudioPlayer
    if (soundPlayer == nil) {
       // initialize soundPlayer
       soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
       soundPlayer.delegate = self;
    }
    [soundPlayer playAtTime:soundPlayer.deviceCurrentTime + 10];
    [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];    
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    [self soundPlayShort:self];
}

如果我按照下面的代码更新audioPlayerDidFinishPlaying,则会恢复其他声音(第 3 点。),但我的序列中的下一个提醒不再调用(与第 2 点相关。)

- (void)restoreOtherSounds
{
    [audioSession setActive:NO 
        withFlags:AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation error:nil];
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{

    [self restoreOtherSounds];
    [self soundPlayShort:self];
}

而且我还没有意识到如何恢复提醒序列,例如来电后。 (第 4 点)

即使是部分答案也可能对我很有帮助。提前致谢。

【问题讨论】:

    标签: ios audio avaudioplayer avaudiosession


    【解决方案1】:

    与第2点相关,尝试在soundPlayShort中初始化AVAudioPlayer之前将音频会话设置为活动状态:

    [[AVAudioSession sharedInstance] setActive:YES error:nil];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      相关资源
      最近更新 更多