一个简单的后台音频播放demo,锁频控制播放

这个demo功能很简单,用AVPlayer实现了音频播放功能,
支持后台播放及锁频状态下控制播放

1.AppDelegate的分类,这里写控制事件

#import "AppDelegate.h"

NS_ASSUME_NONNULL_BEGIN

@interface AppDelegate (audio)
- (void)setLockPlay;
@end

NS_ASSUME_NONNULL_END
#import "AppDelegate+audio.h"
#import "AudioPlayUtil.h"
@implementation AppDelegate (audio)

- (void)setLockPlay{
   
    [[UIApplication  sharedApplication] beginReceivingRemoteControlEvents];
    [self  becomeFirstResponder];
}

- (void)beginReceivingRemoteControlEvents {
   
    [self becomeFirstResponder];
}
-  (BOOL)canBecomeFirstResponder
{
   
    return  YES;
}
-  (void)remoteControlReceivedWithEvent:(UIEvent  *)receivedEvent  {
   

    if  (receivedEvent.type  ==  UIEventTypeRemoteControl)  {
   

        switch  (receivedEvent.subtype)  {
   

            case UIEventSubtypeRemoteControlTogglePlayPause:
                [[AudioPlayUtil sharedInstance] audioPause];
                break;

            case UIEventSubtypeRemoteControlNextTrack:

                if ([AudioPlayUtil sharedInstance].playNext) {
   
                    [AudioPlayUtil sharedInstance].playNext();
                }
                break;

            case UIEventSubtypeRemoteControlPreviousTrack:
                if ([AudioPlayUtil sharedInstance].playUper) {
   
                    [AudioPlayUtil sharedInstance].playUper();
                }
                break;
                
            case UIEventSubtypeRemoteControlPlay:
                [[AudioPlayUtil sharedInstance] audioPlay];
                break;
                
            case UIEventSubtypeRemoteControlPause:
                [[AudioPlayUtil sharedInstance] audioPause];
                break;
            default:
                break;

        }

    }
    
}
@end

2.AudioPlayUtil,这里主要是播放的一些方法和监听事件

#import <Foundation/Foundation.h>
#import "playConfig.h"
NS_ASSUME_NONNULL_BEGIN

@interface AudioPlayUtil : NSObject

+ (AudioPlayUtil*)sharedInstance;

- (void)initPlayerWithAudioInfo:(playConfig *)audioInfo;


@property (copy, nonatomic) void (^audioProgressUpdate)(NSMutableDictionary * diction);
@property (copy, nonatomic) void (^playerCompletion)(void);
@property (copy, nonatomic) void (^playNext)(void);
@property (copy, nonatomic) void (^playUper)(void);

//暂停播放
- (void)audioPause;
//开始播放
- (void)audioPlay;
//回退(15)秒
- (void)QuickretreatWithTime:(NSInteger )miao;
//快进(15)秒
- (void)FastforwardWithTime:(NSInteger)miao;

//设置播放进度
- (void)setToTime:(NSInteger)time;

//设置播放倍速
- (void)settingPlayRate:(float)rate;
@end

//播放主要文件


#import "AudioPlayUtil.h"
#import "AVFoundation/AVPlayer.h"
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>

static AudioPlayUtil *audioPlayUtil = nil;

@interface AudioPlayUtil ()

@property(nonatomic,assign) id timeObserve;
@property(nonatomic,strong) AVPlayer *player;
@property (nonatomic,assign) BOOL isPlay;
@property (strong, nonatomic) playConfig *config;
//倍速
@property (nonatomic,assign) float rate;
@end

@implementation AudioPlayUtil

+ (AudioPlayUtil*)sharedInstance {
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值