1

我在我的应用程序委托中使用以下音频会话:

  AudioSessionInitialize(NULL, NULL, NULL, self);
  UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
  AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);

  AudioSessionSetActive(true);

我希望用户能够在播放 iPod 音乐的同时使用我的应用程序,这很棒而且工作正常……我的应用程序退出并允许播放 iPod 音乐。

我遇到的问题是......在用户退出我的应用程序,进入 iPod 应用程序并暂停后,当他们回到我的应用程序时,我的声音都不起作用。就好像它仍然认为 iPod 会话处于活动状态,即使它没有播放任何音乐!

我基本上只想在 iPod 音乐暂停后重新激活我的音频会话。就目前而言,在我通过 iPod 应用程序播放音乐之后,除非我重新编译,否则我完全无法恢复我的应用程序的声音:( 有人有想法么?

编辑:我忘了提到我正在使用 AVAudioPlayer 类的基本实现来播放我的应用程序的音频。

谢谢!

4

1 回答 1

7

好吧,只是想我会让每个人都张贴,以防它帮助别人......我所做的可能有点骇人听闻,但似乎可以解决问题!

    UInt32 正在播放;
    UInt32 propertySize = sizeof(isPlaying);
    OSStatus 状态;

    // 检查他们的 iPod 音乐是否正在播放
    状态 = AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &isPlaying);

    // 相应地设置会话类别
    如果(!正在播放){
      NSLog(@"...SoloAmbientSound");
      UInt32 sessionCategory = kAudioSessionCategory_SoloAmbientSound;
      AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
    }别的{
      NSLog(@"...AmbientSound");
      UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
      AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
    }

于 2009-07-04T05:03:10.213 回答