564 lines
20 KiB
Objective-C
Executable File
564 lines
20 KiB
Objective-C
Executable File
// Copyright 2015 Google Inc.
|
|
|
|
/** @cond ENABLE_FEATURE_GUI */
|
|
|
|
#import <GoogleCast/GCKDefines.h>
|
|
#import <GoogleCast/GCKMediaStatus.h>
|
|
#import <GoogleCast/GCKRemoteMediaClient.h>
|
|
#import <GoogleCast/GCKSession.h>
|
|
#import <GoogleCast/GCKUIButton.h>
|
|
#import <GoogleCast/GCKUIImageHints.h>
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import <UIKit/UIKit.h>
|
|
|
|
/**
|
|
* @file GCKUIMediaController.h
|
|
*/
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/**
|
|
* @var GCKUIControlStateRepeatOff
|
|
* Custom <a href="https://goo.gl/tZWsqZ"><b>UIControlState</b></a> for the repeat mode button.
|
|
* Corresponds to @ref GCKMediaRepeatModeOff.
|
|
*
|
|
* @deprecated Use GCKUIButtonStateRepeatOff with GCKUIMultistateButton.
|
|
* @since 3.0
|
|
*/
|
|
GCK_EXTERN GCK_DEPRECATED("Use GCKUIButtonStateRepeatOff with GCKUIMultistateButton.")
|
|
const UIControlState GCKUIControlStateRepeatOff;
|
|
|
|
/**
|
|
* @var GCKUIButtonStateRepeatOff
|
|
* GCKUIMultistateButton state for the repeat mode button. Corresponds to
|
|
* @ref GCKMediaRepeatModeOff.
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
GCK_EXTERN const NSUInteger GCKUIButtonStateRepeatOff;
|
|
|
|
/**
|
|
* @var GCKUIControlStateRepeatAll
|
|
* Custom <a href="https://goo.gl/tZWsqZ"><b>UIControlState</b></a> for the repeat mode button.
|
|
* Corresponds to @ref GCKMediaRepeatModeAll.
|
|
*
|
|
* @deprecated Use GCKUIButtonStateRepeatAll with GCKUIMultistateButton.
|
|
* @since 3.0
|
|
*/
|
|
GCK_EXTERN GCK_DEPRECATED("Use GCKUIButtonStateRepeatAll with GCKUIMultistateButton.")
|
|
const UIControlState GCKUIControlStateRepeatAll;
|
|
|
|
/**
|
|
* @var GCKUIButtonStateRepeatAll
|
|
* GCKUIMultistateButton state for the repeat mode button. Corresponds to
|
|
* @ref GCKMediaRepeatModeAll.
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
GCK_EXTERN const NSUInteger GCKUIButtonStateRepeatAll;
|
|
|
|
/**
|
|
* @var GCKUIControlStateRepeatSingle
|
|
* Custom <a href="https://goo.gl/tZWsqZ"><b>UIControlState</b></a> for the repeat mode button.
|
|
* Corresponds to @ref GCKMediaRepeatModeSingle.
|
|
*
|
|
* @deprecated Use GCKUIButtonStateRepeatSingle with GCKUIMultistateButton.
|
|
* @since 3.0
|
|
*/
|
|
GCK_EXTERN GCK_DEPRECATED("Use GCKUIButtonStateRepeatSingle with GCKUIMultistateButton.")
|
|
const UIControlState GCKUIControlStateRepeatSingle;
|
|
|
|
/**
|
|
* @var GCKUIButtonStateRepeatSingle
|
|
* GCKUIMultistateButton state for the repeat mode button. Corresponds to
|
|
* @ref GCKMediaRepeatModeSingle.
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
GCK_EXTERN const NSUInteger GCKUIButtonStateRepeatSingle;
|
|
|
|
/**
|
|
* @var GCKUIControlStateShuffle
|
|
* Custom <a href="https://goo.gl/tZWsqZ"><b>UIControlState</b></a> for the repeat mode button.
|
|
* Corresponds to @ref GCKMediaRepeatModeAllAndShuffle.
|
|
*
|
|
* @deprecated Use GCKUIButtonStateShuffle with GCKUIMultistateButton.
|
|
* @since 3.0
|
|
*/
|
|
GCK_EXTERN GCK_DEPRECATED("Use GCKUIButtonStateShuffle with GCKUIMultistateButton.")
|
|
const UIControlState GCKUIControlStateShuffle;
|
|
|
|
/**
|
|
* @var GCKUIButtonStateShuffle
|
|
* GCKUIMultistateButton state for the repeat mode button. Corresponds to
|
|
* @ref GCKMediaRepeatModeAllAndShuffle.
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
GCK_EXTERN const NSUInteger GCKUIButtonStateShuffle;
|
|
|
|
/**
|
|
* @var GCKUIControlStatePlay
|
|
* Custom <a href="https://goo.gl/tZWsqZ"><b>UIControlState</b></a> for the play/pause toggle
|
|
* button. Indicates media is playing.
|
|
*
|
|
* @deprecated Use GCKUIButtonStatePlay with GCKUIMultistateButton.
|
|
* @since 3.0
|
|
*/
|
|
GCK_EXTERN GCK_DEPRECATED("Use GCKUIButtonStatePlay with GCKUIMultistateButton.")
|
|
const UIControlState GCKUIControlStatePlay;
|
|
|
|
/**
|
|
* @var GCKUIButtonStatePlay
|
|
* GCKUIMultistateButton state for the play/pause toggle button. Indicates media is playing.
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
GCK_EXTERN const NSUInteger GCKUIButtonStatePlay;
|
|
|
|
/**
|
|
* @var GCKUIControlStatePause
|
|
* Custom <a href="https://goo.gl/tZWsqZ"><b>UIControlState</b></a> for the play/pause toggle
|
|
* button. Indicates media is paused.
|
|
*
|
|
* @deprecated Use GCKUIButtonStatePause with GCKUIMultistateButton.
|
|
* @since 3.0
|
|
*/
|
|
GCK_EXTERN GCK_DEPRECATED("Use GCKUIButtonStatePause with GCKUIMultistateButton.")
|
|
const UIControlState GCKUIControlStatePause;
|
|
|
|
/**
|
|
* @var GCKUIButtonStatePause
|
|
* GCKUIMultistateButton state for the play/pause toggle button. Indicates media is paused.
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
GCK_EXTERN const NSUInteger GCKUIButtonStatePause;
|
|
|
|
/**
|
|
* @var GCKUIButtonStatePlayLive
|
|
* Custom GCKUIMultistateButton state for the play/pause toggle button. Indicates media is playing
|
|
* and is live.
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
GCK_EXTERN const NSUInteger GCKUIButtonStatePlayLive;
|
|
|
|
/**
|
|
* A block for formatting an arbitrary object as an
|
|
* <a href="https://goo.gl/5dXzU6"><b>NSString</b></a>.
|
|
*
|
|
* @since 3.0
|
|
*/
|
|
typedef NSString *_Nonnull (^GCKUIValueFormatter)(const id value);
|
|
|
|
@protocol GCKUIMediaControllerDelegate;
|
|
@class GCKUIPlaybackRateController;
|
|
@class GCKUIPlayPauseToggleController;
|
|
@class GCKUIStreamPositionController;
|
|
|
|
/**
|
|
* A controller for UI views that are used to control or display the status of media playback on
|
|
* a Cast receiver. The calling application registers its media-related UI controls with the
|
|
* controller by setting the appropriate properties. The controller then responds to touch events
|
|
* on the controls by issuing the appropriate media commands to the receiver, and updates the
|
|
* controls based on status information and media metadata received from the receiver. The
|
|
* controller automatically enables and disables the UI controls as appropriate for the current
|
|
* session and media player state. It additionally disables all of the controls while a request is
|
|
* in progress.
|
|
*
|
|
* See GCKUIMediaControllerDelegate for the delegate protocol.
|
|
*
|
|
* @since 3.0
|
|
*/
|
|
GCK_EXPORT
|
|
@interface GCKUIMediaController : NSObject
|
|
|
|
/**
|
|
* The delegate for receiving notificatiosn from the GCKUIMediaController.
|
|
*/
|
|
@property(nonatomic, weak, nullable) id<GCKUIMediaControllerDelegate> delegate;
|
|
|
|
/**
|
|
* The session that is associated with this controller.
|
|
*/
|
|
@property(nonatomic, strong, readonly, nullable) GCKSession *session;
|
|
|
|
/**
|
|
* Whether there is media currently loaded (or loading) on the receiver. If no Cast session is
|
|
* active, this will be <code>NO</code>.
|
|
*/
|
|
@property(nonatomic, assign, readonly) BOOL mediaLoaded;
|
|
|
|
/**
|
|
* Whether there is a current item in the queue.
|
|
*/
|
|
@property(nonatomic, assign, readonly) BOOL hasCurrentQueueItem;
|
|
|
|
/**
|
|
* Whether there is an item being preloaded in the queue.
|
|
*/
|
|
@property(nonatomic, assign, readonly) BOOL hasLoadingQueueItem;
|
|
|
|
/**
|
|
* The latest known media player state. If no Cast session is active, this will be player state
|
|
* just before the last session ended. If there was no prior session, this will be
|
|
* @ref GCKMediaPlayerStateUnknown.
|
|
*/
|
|
@property(nonatomic, assign, readonly) GCKMediaPlayerState lastKnownPlayerState;
|
|
|
|
/**
|
|
* The latest known media stream position. If no Cast session is active, this will be the stream
|
|
* position of the media just before the last session ended. If there was no prior session, this
|
|
* will be @ref kGCKInvalidTimeInterval.
|
|
*/
|
|
@property(nonatomic, assign, readonly) NSTimeInterval lastKnownStreamPosition;
|
|
|
|
/**
|
|
* A "play" button. When the button is tapped, playback of the currently loaded media is started or
|
|
* resumed on the receiver. The button will be disabled if playback is already in progress, or if
|
|
* there is no media currently loaded, or if there is no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIButton *playButton;
|
|
|
|
/**
|
|
* A "pause" button. When the button is tapped, playback of the currently loaded media is paused on
|
|
* the receiver. The button will be disabled if the currently loaded media does not support pausing,
|
|
* or if playback is not currently in progress, or if there is no media currently loaded, or if
|
|
* there is no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIButton *pauseButton;
|
|
|
|
/**
|
|
* A "play/pause" toggle button. The caller should set appropriate icons for the button's
|
|
* @ref GCKUIButtonStatePlay, @ref GCKUIButtonStatePlayLive, and @ref GCKUIButtonStatePause button
|
|
* states, namely, a "pause" icon for the play state, a "stop" icon for the play-live state, and a
|
|
* "play" icon for the pause state. The button state is automatically updated to reflect the current
|
|
* playback state on the receiver. When the button is tapped, playback of the currently loaded media
|
|
* is paused or resumed on the receiver. The button will be disabled if the currently loaded media
|
|
* does not support pausing, or if playback is not currently in progress or paused, or if there is
|
|
* no media currently loaded, or if there is no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) GCKUIMultistateButton *playPauseToggleButton;
|
|
|
|
/**
|
|
* A "play/pause" toggle controller. Used as a stand-in for a custom, application-supplied
|
|
* play/pause toggle UI. See GCKUIPlayPauseToggleController for details.
|
|
*
|
|
* @since 3.4
|
|
*/
|
|
@property(nonatomic, strong, nullable)
|
|
GCKUIPlayPauseToggleController *playPauseToggleController;
|
|
|
|
/**
|
|
* A "stop" button. When the button is tapped, playback of the currently loaded media is stopped on
|
|
* the receiver. The button will be disabled if there is no media currently loaded, or if there is
|
|
* no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIButton *stopButton;
|
|
|
|
/**
|
|
* A button for seeking 30 seconds forward in the currently playing media item. The button will be
|
|
* disabled if there is no media
|
|
* currently loaded, or if there is no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIButton *forward30SecondsButton;
|
|
|
|
/**
|
|
* A button for seeking 30 seconds back in the currently playing media item. The button will be
|
|
* disabled if there is no media currently loaded, or if there is no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIButton *rewind30SecondsButton;
|
|
|
|
/**
|
|
* A button for pausing queue playback once the current item finishes playing.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIButton *pauseQueueButton;
|
|
|
|
/**
|
|
* A "next" button. When the button is tapped, playback moves to the next media item in the queue.
|
|
* The button will be disabled if the operation is not supported, or if there is no media currently
|
|
* loaded, or if there is no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIButton *nextButton;
|
|
|
|
/**
|
|
* A "previous" button. When the button is tapped, playback moves to the previous media item in the
|
|
* queue. The button will be disabled if the operation is not supported, or if there is no media
|
|
* currently loaded, or if there is no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIButton *previousButton;
|
|
|
|
/**
|
|
* A button for cycling through the available queue repeat modes. (See @ref GCKMediaRepeatMode.) The
|
|
* caller should set appropriate icons for the button's @ref GCKUIButtonStateRepeatOff,
|
|
* @ref GCKUIButtonStateRepeatSingle, @ref GCKUIButtonStateRepeatAll, and
|
|
* @ref GCKUIButtonStateShuffle button states. The button state is automatically updated to reflect
|
|
* the current queue repeat mode on the receiver. Tapping on the button cycles to the next repeat
|
|
* mode, in the order:
|
|
*
|
|
* @ref GCKMediaRepeatModeOff → @ref GCKMediaRepeatModeAll →
|
|
* @ref GCKMediaRepeatModeSingle → @ref GCKMediaRepeatModeAllAndShuffle
|
|
*
|
|
* The button will be disabled if there is no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) GCKUIMultistateButton *repeatModeButton;
|
|
|
|
/**
|
|
* A slider for displaying and changing the current stream position. When the slider's value is
|
|
* changed by the user, the stream position of the currently loaded media is updated on the
|
|
* receiver. While playback of media is in progress on the receiver, the slider's value is updated
|
|
* in realtime to reflect the current stream position. The slider will be disabled if the currently
|
|
* loaded media does not support seeking, or if there is no media currently loaded, or if there is
|
|
* no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UISlider *streamPositionSlider;
|
|
|
|
/**
|
|
* A view for displaying the current stream progress. While playback of media is in progress on the
|
|
* receiver, the views's value is updated in realtime to reflect the current stream position. The
|
|
* view will be disabled if the currently loaded media is a live stream, or if there is no media
|
|
* currently loaded, or if there is no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIProgressView *streamProgressView;
|
|
|
|
/**
|
|
* A label for displaying the current stream position, in minutes and seconds. If there is no media
|
|
* currently loaded, or if there is no Cast session currently active, the label displays a localized
|
|
* form of "--:--".
|
|
*/
|
|
@property(nonatomic, weak, nullable) UILabel *streamPositionLabel;
|
|
|
|
/**
|
|
* A label for displaying the current stream duration, in minutes and seconds. If the currently
|
|
* loaded media does not have a duration (for example, if it is a live stream), or if there is no
|
|
* media currently loaded, or if there is no Cast session currently active, the label displays a
|
|
* localized form of "--:--".
|
|
*/
|
|
@property(nonatomic, weak, nullable) UILabel *streamDurationLabel;
|
|
|
|
/**
|
|
* A label for displaying the remaining stream time (the duration minus the position), in minutes
|
|
* and seconds. If the currently loaded media does not have a duration (for example, if it is a live
|
|
* stream), or if there is no media currently loaded, or if there is no Cast session currently
|
|
* active, the label displays a localized form of "--:--".
|
|
*/
|
|
@property(nonatomic, weak, nullable) UILabel *streamTimeRemainingLabel;
|
|
|
|
/**
|
|
* A stream posdition controller. Used as a stand-in for a custom, application-supplied
|
|
* stream position and/or seek UI. See GCKUIStreamPositionController for details.
|
|
*
|
|
* @since 3.4
|
|
*/
|
|
@property(nonatomic, strong, nullable)
|
|
GCKUIStreamPositionController *streamPositionController;
|
|
|
|
/**
|
|
* A stream playback rate controller. See GCKUIPlaybackRateController for details.
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
@property(nonatomic, strong, nullable)
|
|
GCKUIPlaybackRateController *playbackRateController;
|
|
|
|
/**
|
|
* Whether remaining stream time will be displayed as a negative value, for example, "-1:23:45". By
|
|
* default this property is set to <code>YES</code>.
|
|
*/
|
|
@property(nonatomic, assign) BOOL displayTimeRemainingAsNegativeValue;
|
|
|
|
/**
|
|
* Whether stream position controls (including the stream position slider, the stream position
|
|
* label, the stream duration label, and the stream progress view) should be hidden for live
|
|
* content. The default value is <code>NO</code>.
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
@property(nonatomic, assign) BOOL hideStreamPositionControlsForLiveContent;
|
|
|
|
/**
|
|
* A button for selecting audio tracks and/or closed captions or subtitles. When the button is
|
|
* tapped, the media tracks selection UI is displayed to the user. The button will be disabled if
|
|
* the currently loaded media does not have any selectable media tracks, or if there is no media
|
|
* currently loaded, or if there is no Cast session currently active.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIButton *tracksButton;
|
|
|
|
/**
|
|
* A label for displaying a subtitle for the currently loaded media. If there is no subtitle field
|
|
* explicitly set in the metadata, the label will display the most appropriate metadata field based
|
|
* on the media type, for example the studio name for a movie or the artist name for a music track.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UILabel *smartSubtitleLabel;
|
|
|
|
/**
|
|
* An activity indicator view for indicating that the media is in a loading state.
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIActivityIndicatorView *mediaLoadingIndicator;
|
|
|
|
/**
|
|
* A label for displaying the amount of time left until the ad can be skipped.
|
|
*
|
|
* @since 4.3
|
|
*/
|
|
@property(nonatomic, weak, nullable) UILabel *skipAdLabel;
|
|
|
|
/**
|
|
* A button for skipping the current ad.
|
|
*
|
|
* @since 4.3
|
|
*/
|
|
@property(nonatomic, weak, nullable) UIButton *skipAdButton;
|
|
|
|
/**
|
|
* Initializes an instance.
|
|
*/
|
|
- (instancetype)init;
|
|
|
|
/**
|
|
* Binds a <a href="https://goo.gl/POkr7n"><b>UILabel</b></a> to a metadata key. The view will
|
|
* display the current value of the corresponding metadata field.
|
|
*
|
|
* See GCKMediaMetadata for a list of predefined metadata keys.
|
|
*
|
|
* @param label The <a href="https://goo.gl/POkr7n"><b>UILabel</b></a> that will display the value.
|
|
* @param key The metadata key.
|
|
*/
|
|
- (void)bindLabel:(UILabel *)label toMetadataKey:(NSString *)key;
|
|
|
|
/**
|
|
* Binds a <a href="https://goo.gl/POkr7n"><b>UILabel</b></a> to a metadata key. The view will
|
|
* display the current value of the corresponding metadata field.
|
|
*
|
|
* See GCKMediaMetadata for a list of predefined metadata keys.
|
|
*
|
|
* @param label The <a href="https://goo.gl/POkr7n"><b>UILabel</b></a> that will display the value.
|
|
* @param key The metadata key.
|
|
* @param formatter A block that will produce the desired string representation of the value.
|
|
*/
|
|
- (void)bindLabel:(UILabel *)label
|
|
toMetadataKey:(NSString *)key
|
|
withFormatter:(GCKUIValueFormatter)formatter;
|
|
|
|
/**
|
|
* Binds a <a href="https://goo.gl/ncWBFi"><b>UITextView</b></a> to a metadata key. The view will
|
|
* display the current value of the corresponding metadata field.
|
|
*
|
|
* See GCKMediaMetadata for a list of predefined metadata keys.
|
|
*
|
|
* @param textView The <a href="https://goo.gl/ncWBFi"><b>UITextView</b></a> that will display the
|
|
* value.
|
|
* @param key The metadata key.
|
|
*/
|
|
- (void)bindTextView:(UITextView *)textView toMetadataKey:(NSString *)key;
|
|
|
|
/**
|
|
* Binds a <a href="https://goo.gl/ncWBFi"><b>UITextView</b></a> to a metadata key. The view will
|
|
* display the current value of the corresponding metadata field.
|
|
*
|
|
* See GCKMediaMetadata for a list of predefined metadata keys.
|
|
*
|
|
* @param textView The <a href="https://goo.gl/ncWBFi"><b>UITextView</b></a> that will display the
|
|
* value.
|
|
* @param key The metadata key.
|
|
* @param formatter A block that will produce the desired string representation of the value.
|
|
*/
|
|
- (void)bindTextView:(UITextView *)textView
|
|
toMetadataKey:(NSString *)key
|
|
withFormatter:(GCKUIValueFormatter)formatter;
|
|
|
|
/**
|
|
* Binds a <a href="https://goo.gl/8Eb8FS"><b>UIImageView</b></a> to a GCKUIImageHints instance.
|
|
* The currently installed GCKUIImagePicker will be used to select an image from the metadata for
|
|
* the view.
|
|
*
|
|
* @param imageView The <a href="https://goo.gl/8Eb8FS"><b>UIImageView</b></a> that will display the
|
|
* selected image.
|
|
* @param imageHints The image hints.
|
|
*/
|
|
- (void)bindImageView:(UIImageView *)imageView toImageHints:(GCKUIImageHints *)imageHints;
|
|
|
|
/**
|
|
* Unbinds the specified view.
|
|
*
|
|
* @param view The view to unbind.
|
|
*/
|
|
- (void)unbindView:(UIView *)view;
|
|
|
|
/**
|
|
* Unbinds all bound views.
|
|
*/
|
|
- (void)unbindAllViews;
|
|
|
|
/**
|
|
* Changes the repeat mode for the queue to the next mode in the cycle:
|
|
*
|
|
* @ref GCKMediaRepeatModeOff → @ref GCKMediaRepeatModeAll →
|
|
* @ref GCKMediaRepeatModeSingle → @ref GCKMediaRepeatModeAllAndShuffle
|
|
*
|
|
* @return The new repeat mode.
|
|
*/
|
|
- (GCKMediaRepeatMode)cycleRepeatMode;
|
|
|
|
/**
|
|
* A convenience method for displaying the media track selection UI.
|
|
*/
|
|
- (void)selectTracks;
|
|
|
|
/**
|
|
* Sends and monitors the skip ad request.
|
|
*
|
|
* @since 4.3
|
|
*/
|
|
- (void)skipAd;
|
|
|
|
@end
|
|
|
|
/**
|
|
* The GCKUIMediaController delegate protocol.
|
|
*
|
|
* @since 3.0
|
|
*/
|
|
@protocol GCKUIMediaControllerDelegate <NSObject>
|
|
|
|
@optional
|
|
|
|
/**
|
|
* Called when the remote media player state has changed.
|
|
*
|
|
* @param mediaController The GCKUIMediaController instance.
|
|
* @param playerState The new player state.
|
|
* @param streamPosition The last known stream position at the time of the player state change.
|
|
*/
|
|
- (void)mediaController:(GCKUIMediaController *)mediaController
|
|
didUpdatePlayerState:(GCKMediaPlayerState)playerState
|
|
lastStreamPosition:(NSTimeInterval)streamPosition;
|
|
|
|
/**
|
|
* Called when preloading has started for an upcoming media queue item.
|
|
*
|
|
* @param mediaController The GCKUIMediaController instance.
|
|
* @param itemID The ID of the item that is being preloaded, or @ref kGCKMediaQueueInvalidItemID
|
|
* if none.
|
|
*/
|
|
- (void)mediaController:(GCKUIMediaController *)mediaController
|
|
didBeginPreloadForItemID:(NSUInteger)itemID;
|
|
|
|
/**
|
|
* Called when new media status has been received from the receiver, and after the
|
|
* GCKUIMediaController has finished processing the updated status.
|
|
*
|
|
* @param mediaController The GCKUIMediaController instance.
|
|
* @param mediaStatus The new media status.
|
|
*/
|
|
- (void)mediaController:(GCKUIMediaController *)mediaController
|
|
didUpdateMediaStatus:(GCKMediaStatus *)mediaStatus;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|
|
|
|
/** @endcond */
|