Je veux enregistrer mon application si l'utilisateur joue de la musique. Fondamentalement, je voudrais savoir si le bouton dans le centre de contrôle montre une pause au lieu de jouer (depuis, le téléphone joue de la musique). Je ne veux pas utiliser la solution de here car cela est également vrai lors d'un appel par exemple.Vérifiez si iOS lit de la musique ("Est-ce que le bouton est dans le centre de contrôle Pause?")
1
A
Répondre
0
Trouvé deux façons, mais à la fois pour le Springboard est nécessaire. Puisque les applications et les outils sont dans un sandbox, ces solutions ne peuvent être utilisées que dans un Tweak qui se branche sur Springboard!
Première:
@interface SBMediaController : NSObject
+ (id)sharedInstance;
- (BOOL)isPlaying;
@end
bool isMusicPlaying = [[%c(SBMediaController) sharedInstance] isPlaying]; // this is always false if not hooked into Springboard!
deuxième (cette solution est asynchrone):
#import <MediaRemote/MediaRemote.h> // also add MediaRemote to your XXX_PRIVATE_FRAMEWORKS
MRMediaRemoteGetNowPlayingInfo(dispatch_get_main_queue(), ^(CFDictionaryRef information) {
NSDictionary *dict=(__bridge NSDictionary *)(information);
if(dict != NULL && [dict objectForKey:(__bridge NSString *)kMRMediaRemoteNowPlayingInfoPlaybackRate] != NULL){
float rate = [[dict objectForKey:(__bridge NSString *)kMRMediaRemoteNowPlayingInfoPlaybackRate] floatValue];
NSLog(@"playbackRate %f", rate);
bool isMusicPlaying = rate > 0.0;
}
});