音乐

本文详细介绍了如何在iOS应用中实现音乐播放器的功能,包括使用AVFoundation框架进行音频播放、设置后台音频会话、创建AVAudioPlayer实例以及通过代理监听播放事件等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

头文件:

#import <AVFoundation/AVFoundation.h>

代理:

AVAudioPlayerDelegate

单例头文件:

#import "Singleton.h"

@interface music : NSObject

@property (nonatomic, copy) NSString *nameyinyue;

@property (nonatomic, copy) NSString *nameyinxiao;

@property (nonatomic, strong) AVAudioPlayer *audioPlayer;

+ (music *) sharedInstance;

@end

 

@property(strong,nonatomic) music *music_t;

_music_t=[music sharedInstance];

#pragma mark -懒加载
-(AVAudioPlayer *)audioPlayer
{
    if (!_music_t.audioPlayer ) {
        
        // 0. 设置后台音频会话
        [self setBackGroundPlay];
        
        // 1. 获取资源URL
        NSURL *url = [[NSBundle mainBundle]  URLForResource:@"樱花樱花想见你.mp3" withExtension:nil];
        
        // 2. 根据资源URL, 创建 AVAudioPlayer 对象
        _music_t.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
        
        // 2.1 设置允许倍速播放
        self.audioPlayer.enableRate = YES;
        
        // 3. 准备播放
        [_music_t.audioPlayer prepareToPlay];
        
        // 4. 设置代理, 监听播放事件
        _music_t.audioPlayer.delegate = self;
    }
    return _music_t.audioPlayer;
}

- (void)setBackGroundPlay
{
    // 1. 设置会话模式
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; ;
    
    // 2. 激活会话
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
    
    
}
//点击播放或者暂停
-(void)btn1ButtonAction:(UIButton *)btn {
    if ([_music_t.nameyinxiao isEqualToString:@"暂停音效"]) {
        [self initWithYinxiao];
    }
    if ([_music_t.nameyinyue isEqualToString:@"播放音乐"]) {
        [self.audioPlayer play];
        NSLog(@"+++++++++++++++");
        self.audioPlayer.numberOfLoops = -1;
        _music_t.nameyinyue=@"暂停音乐";
    }
    else{
        [self.audioPlayer pause];
        NSLog(@"--------------");
        _music_t.nameyinyue=@"播放音乐";
    }
    [_btnYinyue setImage:[UIImage imageNamed:_music_t.nameyinyue] forState:UIControlStateNormal];
}

 

转载于:https://www.cnblogs.com/sheer-code/p/10732403.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值