You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

255 lines
5.4 KiB

//
// WXYZ_Player.h
// WXYZ_Player
//
// Created by ihoudf on 2017/7/18.
// Copyright © 2017年 ihoudf. All rights reserved.
//
//
// WXYZ_Player当前版本:2.0.2
//
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
#import "WXYZ_PlayerModel.h"
#import "TFBasicVoiceHeaderView.h"
//播放模式
typedef NS_ENUM(NSInteger, WXYZ_PlayerMode){
WXYZ_PlayerModeOnlyOnce, //单曲只播放一次,默认
WXYZ_PlayerModeSingleCycle, //单曲循环
WXYZ_PlayerModeOrderCycle, //顺序循环
WXYZ_PlayerModeShuffleCycle //随机循环
};
@class WXYZ_Player;
@protocol WXYZ_PlayerDataSource <NSObject>
@required
/**
1
@param player WXYZ_Player
*/
- (NSArray<WXYZ_PlayerModel *> *)audioDataForPlayer:(WXYZ_Player *)player;
@optional
/**
2
playWithAudioId时WXYZ_Player会调用此方法请求当前音频的信息
player.currentAudioModel.audioId获取音频在数组中的位置,model
@param player WXYZ_Player
*/
- (WXYZ_PlayerInfoModel *)audioInfoForPlayer:(WXYZ_Player *)player;
@end
@protocol WXYZ_PlayerDelegate <NSObject>
@optional
/**
1
@param player WXYZ_Player
*/
- (void)playerAudioAddToPlayQueue:(WXYZ_Player *)player;
/**
2
@param player WXYZ_Player
*/
- (void)playerReadyToPlay:(WXYZ_Player *)player;
/**
3 (isObserveBufferProgress(YES)YES时有效
@param player WXYZ_Player
@param bufferProgress
*/
- (void)player:(WXYZ_Player *)player bufferProgress:(CGFloat)bufferProgress;
/**
4 isObserveProgress(YES)YES时有效
@param player WXYZ_Player
@param progress
@param currentTime
*/
- (void)player:(WXYZ_Player *)player progress:(CGFloat)progress currentTime:(CGFloat)currentTime totalTime:(CGFloat)totalTime;
/**
5
next
@param player FPlayer
*/
- (void)playerDidPlayToEndTime:(WXYZ_Player *)player;
/**
7
@param player WXYZ_Player
@param isInterrupted YES: NO:
*/
- (void)player:(WXYZ_Player *)player isInterrupted:(BOOL)isInterrupted;
/**
8
@param player WXYZ_Player
@param isHeadphone YES: NO:
*/
- (void)player:(WXYZ_Player *)player isHeadphone:(BOOL)isHeadphone;
/**
9
*/
- (void)playerStateChange:(TFBasicVoicePlayerState)playerState;
// 远程控制切换上一首作品
- (void)audioPlayerRemoteCenterSwitchToPrevious;
// 远程控制切换下一首作品
- (void)audioPlayerRemoteCenterSwitchToNext;
@end
/**
WXYZ_Player播放管理器
*/
@interface WXYZ_Player : NSObject
#pragma mark - 初始化和操作
@property (nonatomic, weak) id<WXYZ_PlayerDataSource> dataSource;
@property (nonatomic, weak) id<WXYZ_PlayerDelegate> delegate;
// 是否禁止上一首远程控制键可用
@property (nonatomic, assign) BOOL remoteCenterPreviousEnable;
// 是否禁止下一首远程控制键可用
@property (nonatomic, assign) BOOL remoteCenterNextEnable;
/**
WXYZ_PlayerModeOnlyOnce
*/
@property (nonatomic, assign) WXYZ_PlayerMode playMode;
/**
*/
@property (nonatomic, assign) CGFloat playRate;
/**
*/
+ (WXYZ_Player *)sharedPlayer;
/**
*/
- (void)initPlayerWithUserId:(NSString *)userId;
/**
*/
- (void)reloadData;
/**
audioId对应的音频开始播放
WXYZ_Player通过数据源方法提前获取数据playWithAudioId选择对应音频播放
[[WXYZ_Player shareInstance] reloadData];
*/
- (void)playWithAudioId:(NSUInteger)audioId;
/**
*/
- (void)play;
/**
*/
- (void)pause;
/**
*/
- (void)next;
/**
*/
- (void)last;
/**
@param value
@param completionBlock seek结束
*/
- (void)seekToTime:(CGFloat)value completionBlock:(void(^)(void))completionBlock;
/**
iOS10之后系统支持的倍速常数有0.50, 0.67, 0.80, 1.0, 1.25, 1.502.0
@param rate
*/
- (void)setRate:(CGFloat)rate;
/**
*/
- (void)deallocPlayer;
#pragma mark - 状态类
/**
*/
@property (nonatomic, readonly, assign) TFBasicVoicePlayerState state;
/**
model
*/
@property (nonatomic, readonly, strong) WXYZ_PlayerModel *currentAudioModel;
/**
model
*/
@property (nonatomic, readonly, strong) WXYZ_PlayerInfoModel *currentAudioInfoModel;
/**
*/
@property (nonatomic, readonly, assign) CGFloat bufferProgress;
/**
*/
@property (nonatomic, readonly, assign) CGFloat progress;
/**
*/
@property (nonatomic, readonly, assign) CGFloat currentTime;
/**
*/
@property (nonatomic, readonly, assign) CGFloat totalTime;
@end