// // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, AudioPlaybackState) { AudioPlaybackState_Stopped, AudioPlaybackState_Playing, AudioPlaybackState_Paused, }; @protocol OWSAudioPlayerDelegate - (AudioPlaybackState)audioPlaybackState; - (void)setAudioPlaybackState:(AudioPlaybackState)state; - (void)setAudioProgress:(CGFloat)progress duration:(CGFloat)duration; @end #pragma mark - typedef NS_ENUM(NSUInteger, OWSAudioBehavior) { OWSAudioBehavior_Unknown, OWSAudioBehavior_Playback, OWSAudioBehavior_AudioMessagePlayback, OWSAudioBehavior_PlayAndRecord, OWSAudioBehavior_Call, }; @interface OWSAudioPlayer : NSObject @property (nonatomic, readonly, weak) id delegate; // This property can be used to associate instances of the player with view // or model objects. @property (nonatomic, weak) id owner; @property (nonatomic) BOOL isLooping; - (instancetype)initWithMediaUrl:(NSURL *)mediaUrl audioBehavior:(OWSAudioBehavior)audioBehavior; - (instancetype)initWithMediaUrl:(NSURL *)mediaUrl audioBehavior:(OWSAudioBehavior)audioBehavior delegate:(id)delegate; - (void)play; - (void)setCurrentTime:(NSTimeInterval)currentTime; - (void)pause; - (void)stop; - (void)togglePlayState; @end NS_ASSUME_NONNULL_END