Как использовать MPMusicPlayerController с AVAudioPlayer

Я пытаюсь воспроизвести звук в приложении с помощью 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, но он не воспроизводит музыку, он говорит, что заголовок имеет значение null.

Я был бы очень признателен, если бы кто-нибудь мог мне помочь с этим.

С уважением, Анкур


person Ankur    schedule 03.09.2010    source источник


Ответы (3)


Я предлагаю переместить настройку аудиосеанса (включая категорию Ambient) в didFinishLaunchingWithOptions вашего делегата приложения и вообще не использовать категорию Playback. Вы по-прежнему можете нормально воспроизводить звуки AVAudio с настройкой Ambient.

Если вы хотите уничтожить музыку iPod всякий раз, когда воспроизводите звуки AV, вам следует использовать только категорию «Воспроизведение». (Я не совсем уверен, что вы пытаетесь сделать.)

Ошибка, которую вы получаете при попытке возобновить воспроизведение музыки iPod, предполагает, что ваш объект MPMusicPlayerController сбрасывает свою очередь песен, когда он останавливается звуками AVAudio, и что вам придется снова настроить MP-плеер. «Title is null» определенно звучит как висячий указатель или что-то подобное в MP-плеере.

person AndrewS    schedule 09.05.2011

Воспроизведение аудио с iPod в AVAudioPlayer невозможно. Вам необходимо преобразовать ссылку на библиотечный актив с ipod, используя * AVURLAsset, в mp3 или wav и сохранить ее в библиотеке документов. В IOS.5 в настоящее время есть ошибка при преобразовании (AudioExportSession) из ipod в файл mp3, поэтому это НЕВОЗМОЖНО. Прости.

person Simon Ward    schedule 11.01.2012

Вам необходимо возобновить проигрыватель iPod после myPlayer окончания воспроизведения.

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