2010-09-03 78 views
2

我试图在应用音频与iPod上播放的我用的播放音频文件的代码是:如何使用MPMusicPlayerController与AVAudioPlayer

代码:

 [[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中的音乐,但它不播放音乐,它说标题为空。

我真的很感激,如果有人能帮助我。

问候, ANKUR

回答

1

我建议移动音频会话设置(包括环境类)到您的应用程序委托的didFinishLaunchingWithOptions和不使用回放类的。 Ambient设置仍然可以播放AVAudio声音。

如果您想在播放AV声音时杀死iPod音乐,则应该只使用播放类别。 (我不完全确定你想要做什么。)

当您尝试恢复iPod音乐时出现错误,表明您的MPMusicPlayerController对象在其停止播放时重置其歌曲队列AVAudio会发出声音,并且您必须重新设置MP播放器。 “标题为空”肯定听起来像MP播放器中的悬挂指针或类似指针。

1

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

0

您需要在myPlayer完成播放后恢复iPod播放器。

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