2

我正在尝试使用 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 音乐但它不播放音乐,它说标题为空。

如果有人可以帮助我,我将不胜感激。

问候, 安库尔

4

3 回答 3

1

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

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

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

于 2011-05-09T18:27:57.803 回答
1

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

于 2012-01-11T14:14:23.453 回答
0

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

-(void) audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
    [player play];
}
于 2017-10-25T07:37:19.793 回答