2017-05-17 2 views

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; 
    } 
});