IOS: как играть песню в фоновом режиме приложения из галереи

Я занимаюсь разработкой приложения, в котором пользователь может выбрать звуковой файл из галереи устройства, и оно начнет воспроизводиться в фоновом режиме во время работы приложения. После выбора он будет запускаться каждый раз, когда приложение запускается, пока пользователь снова не просмотрит и не изменит звуковой файл.

мне нужно скопировать звуковой файл в приложение? или это можно сделать, используя только его путь.

пожалуйста, дайте мне знать, если кто-нибудь может мне помочь.

1 ответ

Решение

Это коды для запрошенных действий, appSoundPlayer - это свойство AVAudioPlayer, объявленное в h-файле. Также этот пример воспроизводит песню в папке ресурсов.

Я сделал это в соответствии с моим требованием: вы хотите воспроизвести его в фоновом режиме, поэтому вам нужно внести некоторые изменения и воспроизвести его в didFinishLaunchingWithOptions и остановить его в applicationWillTerminate. Примите во внимание и эти 2 метода applicationDidEnterBackground applicationWillEnterForeground

#pragma mark -
    #pragma mark *play*
    - (IBAction) playaction {

        NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"songname" ofType:@"mp3"];
        NSURL *newURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
        self.soundFileURL = newURL;
        [newURL release];
        [[AVAudioSession sharedInstance] setDelegate: self];
        [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];

    // Registers the audio route change listener callback function
    AudioSessionAddPropertyListener (
                                     kAudioSessionProperty_AudioRouteChange,
                                     audioRouteChangeListenerCallback,
                                     self
                                     );

    // Activates the audio session.

    NSError *activationError = nil;
    [[AVAudioSession sharedInstance] setActive: YES error: &activationError];

    AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error: nil];
    self.appSoundPlayer = newPlayer;
    [newPlayer release];
    [appSoundPlayer prepareToPlay];
    [appSoundPlayer setVolume: 1.0];
    [appSoundPlayer setDelegate: self];
    [appSoundPlayer play];


    [stopbutton setEnabled:YES];
    [playbutton setEnabled: NO];
    playbutton.hidden=YES;
    pausebutton.hidden =NO;
}//playbutton touch up inside

#pragma mark -
#pragma mark *pause*
-(IBAction)pauseaction {
    [appSoundPlayer pause];
    pausebutton.hidden = YES;
    resumebutton.hidden = NO;

}//pausebutton touch up inside

#pragma mark -
#pragma mark *resume*
-(IBAction)resumeaction{
    [appSoundPlayer prepareToPlay];
    [appSoundPlayer setVolume:1.0];
    [appSoundPlayer setDelegate: self];
    [appSoundPlayer play];
    playbutton.hidden=YES;
    resumebutton.hidden =YES;
    pausebutton.hidden = NO;

}//resumebutton touch up inside

#pragma mark -
#pragma mark *stop*
-(IBAction)stopaction{

    [appSoundPlayer stop];
    [playbutton setEnabled:YES];
    [stopbutton setEnabled:NO];
    playbutton.hidden=NO;
    resumebutton.hidden =YES;
    pausebutton.hidden = YES;

}//stopbutton touch up inside
Другие вопросы по тегам