AvAudioPlayer音频的后台播放

 

其实在网络上很多,都是N年前的方式,搜索一下全部都出来了。做一个demo演示一下。但是发现有许多的问题,找了许久,才发现又是xcode的一个bug,不管是什么资源文件只要是修改不删除现有的编译项目,xcode是不会下载到手机里。

   要先在退出后播放,那必须要设置一下Info.plist.添加一行 Required background modes,在其下加入app plays audio  如下图,这个意思就是说,你要后台播放一个音频。

(建议清除一下原先编译项目,否则你总是惆怅啊!惆怅!)

 

引入AVFoundation framework动态库,通过以下代码注册后台播放:

AVAudioSession *session = [AVAudioSession sharedInstance];  
    [session setActive:YES error:nil];  
    [session setCategory:AVAudioSessionCategoryPlayback error:nil]; 

 

 

原理:通知OS该app支持background audio。缺省情况下,当按下home键时,当前正在运行的程序被suspend,状态从active变成in-active,也就是说如果正在播放音频,按下HOME后就会停止。这里需要让app在按在HOME后,转到后台运行而非被suspend。

完整的代码,添加一个1223.mp3资源,把下面这段代码贴到可以运行的地方,运行---听到声音后按以下home键试试,按两下你就会发现在播放声音控制面板中变成你的图标。

 

 

    [[AVAudioSession  sharedInstance] setCategory: AVAudioSessionCategoryPlayback  error: nil];    

    // Activates the audio session.

    NSError *activationError = nil;

    [[AVAudioSession  sharedInstance] setActive: YES   error: &activationError];

    

    if (activationError) {

        NSLog(@"activ error");

    }

    

    NSString *soundFilePath = [[NSBundlemainBundle]    pathForResource:@"1223"   ofType:@"mp3"];

    NSURL *url = [NSURL URLWithString:soundFilePath];

    //alloc a new player

    audioPlayer = [[AVAudioPlayeralloc] initWithContentsOfURL:url error:nil];

    

    if (!audioPlayer) {

        NSLog(@"error");

    }

    //prepare and set delegate

    [audioPlayer  prepareToPlay];

    [audioPlayer   setDelegate:self];

    

    //play audio

    [audioPlayer   play];

 

 提示记得喂狗 否则只能播放一阵子。。。

转载于:https://www.cnblogs.com/goodleixiao/archive/2012/04/18/2455574.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值