首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在iOS 4中后台播放多个音频文件?

如何在iOS 4中后台播放多个音频文件?
EN

Stack Overflow用户
提问于 2010-09-21 17:47:40
回答 3查看 1.5K关注 0票数 0

我使用AVAudioPlayer和AVAudioSession在我的iPhone应用程序的后台运行音频...

现在我的问题是,我已经编写了一段代码,它从用户那里获取大量歌曲作为输入,并使用AVAudioPlayer逐个播放它们……

问题是,当应用程序转到后台时,其中一个文件正在播放,音频会继续播放,但当播放完成时,声音会消失……在前台,当一个文件完成时,我只是做了一些代码来播放下一个文件,但在后台这是不可能的…

我想申请一些时间来完成这项工作并运行我的代码,但我不能这样做,因为音频文件总是变化的,而且它们可能会很长……所以请告诉我我该怎么做?有没有作为背景音频运行的内置播放列表播放器?或者还有其他解决方案吗?我真的需要把这个带到工作中去。

非常感谢

EN

回答 3

Stack Overflow用户

发布于 2010-10-23 06:44:38

我遇到了同样的问题,还没有完全解决它。audioDidFinishPlaying委托方法仍然会触发,您可以使用it应用程序的beginBackgroundTask来创建AVaudioPlayer的新实例,确保AVAudioSession仍然是活动的,等等。但是当我尝试播放新的AVAudioPlayer实例时,它会立即暂停。我怀疑/害怕的是,没有办法从后台启动音频,只有在应用程序状态转换发生时才能保持播放。不过,我也希望是错的。

票数 2
EN

Stack Overflow用户

发布于 2012-08-26 08:02:20

这是很容易的..just更改目录,如果您使用的音频会话是...

http://developer.apple.com/library/ios/#documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategories/AudioSessionCategories.html

该链接有类别...so使用其中之一,您可以开始在背景中的声音: AVAudioSessionCategoryPlayback kAudioSessionCategory_MediaPlayback

  • 环境模式可能无法工作。
票数 0
EN

Stack Overflow用户

发布于 2015-05-19 15:40:06

代码语言:javascript
运行
复制
//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;//如果您想要停止此行,可以将其取消注释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3759078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档