iOS 实现后台 播放音乐声音 AVAudioPlayer

1、步骤一:在Info.plist中,添加"Required background modes"键,value为:App plays audio
 或者:

步骤二:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    NSError *setCategoryErr = nil;
    NSError *activationErr  = nil;
    [[AVAudioSession sharedInstance]
     setCategory: AVAudioSessionCategoryPlayback
     error: &setCategoryErr];
    [[AVAudioSession sharedInstance]
     setActive: YES
     error: &activationErr];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

步骤三:将以下代码添加到appDelegate文件中的- (void)applicationDidEnterBackground:(UIApplication *)application函数,也可添加到在具体类中注册的应用进入后台后的通知方法

- (void)applicationDidEnterBackground:(UIApplication *)application{

UIApplication*   app = [UIApplication sharedApplication];
    __block    UIBackgroundTaskIdentifier bgTask;
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        dispatch_async(dispatch_get_main_queue(), ^{
            if (bgTask != UIBackgroundTaskInvalid)
            {
                bgTask = UIBackgroundTaskInvalid;
            }
        });
    }];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        dispatch_async(dispatch_get_main_queue(), ^{
            if (bgTask != UIBackgroundTaskInvalid)
            {
                bgTask = UIBackgroundTaskInvalid;
            }
        });
    });
}

接下来就是在播放页面进行播放了:

先加入代理:AVAudioPlayerDelegate

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa }
span.s1 { }

    //从budle路径下读取音频文件   这个文件名是你的歌曲名字,mp3是你的音频格式
     NSString *string = [[NSBundle mainBundle] pathForResource:@"has_consult" ofType:@"mp3"];
     //把音频文件转换成url格式
     NSURL *url = [NSURL fileURLWithPath:string];
     //初始化音频类 并且添加播放文件
     NSError *error;
     avAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];

     //设置初始音量大小
     // avAudioPlayer.volume = 1;

     //设置音乐播放次数  -1为一直循环
     avAudioPlayer.numberOfLoops = -1;
     //预播放
     [avAudioPlayer prepareToPlay];
    NSLog(@"%ld",(long)error.code);

//播放
-(void)play{
    [avAudioPlayer play];

}
//停止
-(void)stop{
    avAudioPlayer.currentTime = 0;  //当前播放时间设置为0
    [avAudioPlayer stop];

}

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #703daa }
span.s1 { }

时间: 2024-12-21 10:36:34

iOS 实现后台 播放音乐声音 AVAudioPlayer的相关文章

IOS后台播放音乐

IOS后台播放音乐 博客分类: IOS http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AudioandVideoTechnologies/AudioandVideoTechnologies.html#//apple_ref/doc/uid/TP40007072-CH19-SW32 1.首先在工程中导入播放音乐所使用的框架:AV Fo

iOS 后台播放音乐

//后台播放音乐 -(void)playAudio{ dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(dispatchQueue, ^(void) { NSError *audioSessionError = nil; AVAudioSession *audioSession = [AVAudioSession shared

iOS AVPlayer 后台播放问题自动停止问题 防止应用被后台挂起方法

iOS AVPlayer 后台播放问题自动停止问题 防止应用被后台挂起方法 2016-09-08 16:16 1597人阅读 评论(0) 收藏 举报  分类: iOS 开发笔记(37)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1.创建播放器时创建AVAudioSession [objc] view plain copy AVAudioSession *session = [AVAudioSessionsharedInstance]; [session setCa

使用 AVAudioSession 实现后台播放音乐

1. 前言 AVAudioSession是一个单例,无需实例化即可直接使用.AVAudioSession在各种音频环境中起着非常重要的作用 针对不同的音频应用场景,需要设置不同的音频会话分类 1.1 ?AVAudioSession的类别 AVAudioSessionCategoryAmbient –混音播放,例如雨声.汽车引擎等,可与其他音乐一起播放 AVAudioSessionCategorySoloAmbient –后台播放,其他音乐将被停止 AVAudioSessionCategoryPl

IOS后台运行 之 后台播放音乐

iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像用AvAudioPlayer,AvPlayer播放的话,要实现完美的后台音频播放,依据app的功能需要,可能需要实现几个关键的功能. 首先,播放音频之前先要设置AVAudioSession模式,通常只用来播放的App可以设为AVAudioSessionCategoryPlayback即可.模式意义及其他模式请参考文档. //后台播放

ios 后台播放音乐1条注意事项

除了设置程序的后台模式,还需要几行代码 AVAudioSession *session = [AVAudioSession sharedInstance]; [session setCategory:AVAudioSessionCategoryPlayback error:nil]; [session setActive:YES error:nil]; 不加这几行代码是无法在真机上后台播放的!(模拟器好像可以不加) 在附一张background模式的设置图

后台播放音乐

iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像用AvAudioPlayer,AvPlayer播放的话,要实现完美的后台音频播放,依据app的功能需要,可能需要实现几个关键的功能. 首先,播放音频之前先要设置AVAudioSession模式,通常只用来播放的App可以设为AVAudioSessionCategoryPlayback即可.模式意义及其他模式请参考文档. //后台播放

手机影音第十五天,利用service实现后台播放音乐,在通知栏显示当前音乐信息等

代码已经托管到码云上,有兴趣的小伙伴可以下载看看 https://git.oschina.net/joy_yuan/MobilePlayer 先来一张目前的音乐播放器的效果图,当播放时,手机的状态通知栏也会有音乐信息显示. 这里可以看到有歌名.演唱者,还有歌曲的总时间,当前播放时间,当前播放进度,音乐暂停.下一首,上一首,音乐循环模式(单曲循环,顺序播放.循环播放)功能的实现.下一步就是把中间空白的部分填充歌词,然后做成根据进度显示歌词. 由于这次的内容有点多,是写了一天半的代码,讲的没那么细,

iOS开发简单的实现后台任务(诸如后台播放音乐,定时器,后台定位等)

最多能运行多长时间,没挑战过极限,具体能保持多长时间需要自己测试下. 注意:用真机测试 直接上代码 在appdelegate的.m中的进入后台时加入一些代码操作即可 /** *  当app进入后台时调用 */ - (void)applicationDidEnterBackground:(UIApplication *)application { /** *  app的状态 *  1.死亡状态:没有打开app *  2.前台运行状态 *  3.后台暂停状态:停止一切动画.定时器.多媒体.联网操作,