首页 > 移动平台 > 详细

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

时间:2017-04-25 15:41:41      阅读:536      评论:0      收藏:0      [点我收藏+]

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

    //从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];
  
}

 

 

 

 

 

 

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

原文:http://www.cnblogs.com/xujiahui/p/6762219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!