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