我使用AVAudioPlayer和AVAudioSession在我的iPhone应用程序的后台运行音频...
现在我的问题是,我已经编写了一段代码,它从用户那里获取大量歌曲作为输入,并使用AVAudioPlayer逐个播放它们……
问题是,当应用程序转到后台时,其中一个文件正在播放,音频会继续播放,但当播放完成时,声音会消失……在前台,当一个文件完成时,我只是做了一些代码来播放下一个文件,但在后台这是不可能的…
我想申请一些时间来完成这项工作并运行我的代码,但我不能这样做,因为音频文件总是变化的,而且它们可能会很长……所以请告诉我我该怎么做?有没有作为背景音频运行的内置播放列表播放器?或者还有其他解决方案吗?我真的需要把这个带到工作中去。
非常感谢
发布于 2010-10-23 06:44:38
我遇到了同样的问题,还没有完全解决它。audioDidFinishPlaying委托方法仍然会触发,您可以使用it应用程序的beginBackgroundTask来创建AVaudioPlayer的新实例,确保AVAudioSession仍然是活动的,等等。但是当我尝试播放新的AVAudioPlayer实例时,它会立即暂停。我怀疑/害怕的是,没有办法从后台启动音频,只有在应用程序状态转换发生时才能保持播放。不过,我也希望是错的。
发布于 2012-08-26 08:02:20
这是很容易的..just更改目录,如果您使用的音频会话是...
http://developer.apple.com/library/ios/#documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategories/AudioSessionCategories.html
该链接有类别...so使用其中之一,您可以开始在背景中的声音: AVAudioSessionCategoryPlayback kAudioSessionCategory_MediaPlayback
发布于 2015-05-19 15:40:06
//ViewController.h ,write below code
@interface ViewController : UIViewController<AVAudioRecorderDelegate,AVAudioPlayerDelegate>
//assign property to player
@property(nonatomic,retain) AVAudioPlayer *player;
//then write in ViewController.m file in ViewDidLoad Method below code
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
NSError *soundError;
NSString *path=[[NSBundle mainBundle]pathForResource:@"soundFileName" ofType:@"mp3"]; //.mp3 file for player
NSURL *file=[[NSURL alloc]initFileURLWithPath:path]; //path
_player=[[AVAudioPlayer alloc]initWithContentsOfURL:file error:&soundError]; //player Object
if(_player == nil)
{
NSLog(@"player is empty because of %@",soundError);
}
else
{
[_player play];
_player.volume=1.0;
[_player setDelegate:self];
}
//对于stop player,您可以使用// _player stop;//如果您想要停止此行,可以将其取消注释。
https://stackoverflow.com/questions/3759078
复制相似问题