123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- /*
- * Media remote framework header.
- *
- * Copyright (c) 2013-2014 Cykey (David Murray)
- * All rights reserved.
- */
- #ifndef MEDIAREMOTE_H_
- #define MEDIAREMOTE_H_
- #include <CoreFoundation/CoreFoundation.h>
- #if __cplusplus
- extern "C" {
- #endif
- #pragma mark - Notifications
- /*
- * These are used on the local notification center.
- */
- extern CFStringRef kMRMediaRemoteNowPlayingInfoDidChangeNotification;
- extern CFStringRef kMRMediaRemoteNowPlayingPlaybackQueueDidChangeNotification;
- extern CFStringRef kMRMediaRemotePickableRoutesDidChangeNotification;
- extern CFStringRef kMRMediaRemoteNowPlayingApplicationDidChangeNotification;
- extern CFStringRef kMRMediaRemoteNowPlayingApplicationIsPlayingDidChangeNotification;
- extern CFStringRef kMRMediaRemoteRouteStatusDidChangeNotification;
- #pragma mark - Keys
- extern CFStringRef kMRMediaRemoteNowPlayingApplicationPIDUserInfoKey;
- extern CFStringRef kMRMediaRemoteNowPlayingApplicationIsPlayingUserInfoKey;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoAlbum;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoArtist;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoArtworkData;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoArtworkMIMEType;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoChapterNumber;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoComposer;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoDuration;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoElapsedTime;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoGenre;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoIsAdvertisement;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoIsBanned;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoIsInWishList;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoIsLiked;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoIsMusicApp;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoPlaybackRate;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoProhibitsSkip;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoQueueIndex;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoRadioStationIdentifier;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoRepeatMode;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoShuffleMode;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoStartTime;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoSupportsFastForward15Seconds;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoSupportsIsBanned;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoSupportsIsLiked;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoSupportsRewind15Seconds;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoTimestamp;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoTitle;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoTotalChapterCount;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoTotalDiscCount;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoTotalQueueCount;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoTotalTrackCount;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoTrackNumber;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoUniqueIdentifier;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoRadioStationIdentifier;
- extern CFStringRef kMRMediaRemoteNowPlayingInfoRadioStationHash;
- extern CFStringRef kMRMediaRemoteOptionMediaType;
- extern CFStringRef kMRMediaRemoteOptionSourceID;
- extern CFStringRef kMRMediaRemoteOptionTrackID;
- extern CFStringRef kMRMediaRemoteOptionStationID;
- extern CFStringRef kMRMediaRemoteOptionStationHash;
- extern CFStringRef kMRMediaRemoteRouteDescriptionUserInfoKey;
- extern CFStringRef kMRMediaRemoteRouteStatusUserInfoKey;
- #pragma mark - API
- typedef enum {
- /*
- * Use nil for userInfo.
- */
- kMRPlay = 0,
- kMRPause = 1,
- kMRTogglePlayPause = 2,
- kMRStop = 3,
- kMRNextTrack = 4,
- kMRPreviousTrack = 5,
- kMRToggleShuffle = 6,
- kMRToggleRepeat = 7,
- kMRStartForwardSeek = 8,
- kMREndForwardSeek = 9,
- kMRStartBackwardSeek = 10,
- kMREndBackwardSeek = 11,
- kMRGoBackFifteenSeconds = 12,
- kMRSkipFifteenSeconds = 13,
- /*
- * Use a NSDictionary for userInfo, which contains three keys:
- * kMRMediaRemoteOptionTrackID
- * kMRMediaRemoteOptionStationID
- * kMRMediaRemoteOptionStationHash
- */
- kMRLikeTrack = 0x6A,
- kMRBanTrack = 0x6B,
- kMRAddTrackToWishList = 0x6C,
- kMRRemoveTrackFromWishList = 0x6D
- } MRCommand;
- Boolean MRMediaRemoteSendCommand(MRCommand command, id userInfo);
- void MRMediaRemoteSetPlaybackSpeed(int speed);
- void MRMediaRemoteSetElapsedTime(double elapsedTime);
- void MRMediaRemoteSetNowPlayingApplicationOverrideEnabled(Boolean enabled);
- void MRMediaRemoteRegisterForNowPlayingNotifications(dispatch_queue_t queue);
- void MRMediaRemoteUnregisterForNowPlayingNotifications();
- void MRMediaRemoteBeginRouteDiscovery();
- void MRMediaRemoteEndRouteDiscovery();
- CFArrayRef MRMediaRemoteCopyPickableRoutes();
- typedef void (^MRMediaRemoteGetNowPlayingInfoCompletion)(CFDictionaryRef information);
- typedef void (^MRMediaRemoteGetNowPlayingApplicationPIDCompletion)(int PID);
- typedef void (^MRMediaRemoteGetNowPlayingApplicationIsPlayingCompletion)(Boolean isPlaying);
- void MRMediaRemoteGetNowPlayingApplicationPID(dispatch_queue_t queue, MRMediaRemoteGetNowPlayingApplicationPIDCompletion completion);
- void MRMediaRemoteGetNowPlayingInfo(dispatch_queue_t queue, MRMediaRemoteGetNowPlayingInfoCompletion completion);
- void MRMediaRemoteGetNowPlayingApplicationIsPlaying(dispatch_queue_t queue, MRMediaRemoteGetNowPlayingApplicationIsPlayingCompletion completion);
- void MRMediaRemoteKeepAlive();
- void MRMediaRemoteSetElapsedTime(double time);
- void MRMediaRemoteSetShuffleMode(int mode);
- void MRMediaRemoteSetRepeatMode(int mode);
- /*
- * The identifier can be obtained using MRMediaRemoteCopyPickableRoutes.
- * Use the 'RouteUID' or the 'RouteName' key.
- */
- int MRMediaRemoteSelectSourceWithID(CFStringRef identifier);
- void MRMediaRemoteSetPickedRouteWithPassword(CFStringRef route, CFStringRef password);
- CFArrayRef MRMediaRemoteCopyPickableRoutesForCategory(NSString *category);
- Boolean MRMediaRemotePickedRouteHasVolumeControl();
- void MRMediaRemoteSetCanBeNowPlayingApplication(Boolean can);
- void MRMediaRemoteSetNowPlayingInfo(CFDictionaryRef information);
- #if __cplusplus
- }
- #endif
- #endif /* MEDIAREMOTE_H_ */
|