检查iOS是否正在播放音乐("控制中心的按钮是否暂停?")

时间:2017-05-17 22:24:21

标签: ios objective-c jailbreak iphone-privateapi

如果用户正在播放任何音乐,我想查看我的应用。基本上我想知道控制中心的按钮是否显示暂停而不是播放(此后手机正在播放一些音乐)。我不想使用here中的解决方案,因为例如在通话时也是如此。

1 个答案:

答案 0 :(得分:1)

找到了两种方法,但是对于两种方法都需要。由于应用程序和工具位于沙箱中,因此这些解决方案只能用于连接到Springboard的Tweak!

首先:

@interface SBMediaController : NSObject
+ (id)sharedInstance;
- (BOOL)isPlaying;
@end

bool isMusicPlaying = [[%c(SBMediaController) sharedInstance] isPlaying]; // this is always false if not hooked into Springboard!

其次(此解决方案是异步的):

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