【问题标题】:How to use MPMusicPlayerController with AVAudioPlayer如何将 MPMusicPlayerController 与 AVAudioPlayer 一起使用
【发布时间】:2010-09-03 19:31:17
【问题描述】:

我正在尝试使用 ipod 播放应用内音频,我用来播放音频文件的代码是:

代码:

       [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
       UInt32 doSetProperty = 1;
       AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers,  sizeof(doSetProperty), &doSetProperty);
       [[AVAudioSession sharedInstance] setActive: YES error: nil];

       if(error)
       {
           NSLog(@"Some error happened");
       }

    NSString *path = [[NSBundle mainBundle] pathForResource:effect ofType:type];
    myPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    myPlayer.delegate = self;
    myPlayer.numberOfLoops = -2;
    myPlayer.volume = 1.0f;
    [myPlayer play];

并播放我正在使用的 ipod 音乐

代码:

player = [MPMusicPlayerController iPodMusicPlayer];

我的 ipod 播放正常,直到音频开始播放,但一旦音频停止,我就无法回到 ipod 播放。我正在使用

代码:

NSString *value = [[NSUserDefaults standardUserDefaults] stringForKey:@"sound"];

if([value compare:@"ON"] == NSOrderedSame && myPlayer != nil)
{
    [myPlayer stop];
    [myPlayer release];
    myPlayer = nil;
}

NSError *error = nil;

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&error];

if(error)
{
    NSLog(@"Some error happened");
}

停止音频,然后调用

代码:

 [player play];

播放 ipod 音乐但它不播放音乐,它说标题为空。

如果有人能帮我解决这个问题,我将不胜感激。

问候, 安库尔

【问题讨论】:

    标签: iphone avaudioplayer mpmusicplayercontroller


    【解决方案1】:

    我建议将音频会话设置(包括 Ambient 类别)移动到您的应用程序委托的 didFinishLaunchingWithOptions 中,并且根本不使用 Playback 类别。您仍然可以使用 Ambient 设置播放 AVAudio 声音。

    如果您想在播放 AV 声音时终止 iPod 音乐,那么您应该只使用播放类别。 (我不确定您要做什么。)

    当您尝试恢复 iPod 音乐时遇到的错误表明您的 MPMusicPlayerController 对象在被 AVAudio 声音停止时重置其歌曲队列,并且您必须重新设置 MP 播放器。 “Title is null”在 MP 播放器中听起来绝对像是一个悬空指针之类的东西。

    【讨论】:

      【解决方案2】:

      无法在 AVAudioPlayer 中播放 iPod 音频。您需要使用 *AVURLAsset 将库资产链接从 ipod 转换为 mp3 或 wav 并将其保存到文档库。 IOS.5 目前在从 ipod 到 mp3 文件的转换 (AudioExportSession) 中有一个错误,所以它是不可能的。对不起。

      【讨论】:

        【解决方案3】:

        myPlayer 播放完毕后,您需要恢复 iPod 播放器。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多