gpt4 book ai didi

iOS - 以编程方式获取当前播放的项目队列

转载 作者:技术小花猫 更新时间:2023-10-29 11:04:04 27 4
gpt4 key购买 nike

我想以编程方式获取当前在 native 音乐应用程序中播放的队列。我可以使用 MPMusicPlayerController 获取当前正在播放的项目,但我不仅想获取该项目,还想获取整个播放队列。是否可以使用 AVFoundation 或任何其他库来实现?

最佳答案

我很确定这不可能通过任何公共(public) API 实现。 @sooper 提到的 Ecoute 应用程序必须使用私有(private) API。我在我自己的音乐应用程序的代码库中做了一个小实验。首先,我使用这段代码列出了 iPod 音乐播放器中的所有方法(将 #import <objc/runtime.h> 放在顶部):

int i=0;
unsigned int mc = 0;
Method * mlist = class_copyMethodList([MPMusicPlayerController iPodMusicPlayer].class, &mc);
NSLog(@"%d methods for class", mc);
for(i=0;i<mc;i++) {
NSLog(@"\tMethod no #%d: %s", i, sel_getName(method_getName(mlist[i])));
}
free(mlist);

这出现了一些有趣的方法名称,例如 numberOfItemsnowPlayingItemAtIndex: .所以我在文件顶部添加了这个类别:

@interface MPMusicPlayerController (Private)

- (NSInteger)numberOfItems;
- (MPMediaItem*)nowPlayingItemAtIndex:(NSInteger)index;

@end

然后我运行了这段代码:

NSInteger numberOfItems = [[MPMusicPlayerController iPodMusicPlayer] numberOfItems];
for (NSInteger i = 0; i < numberOfItems; i++) {
MPMediaItem* mi = [[MPMusicPlayerController iPodMusicPlayer] nowPlayingItemAtIndex:i];
NSLog(@"%@", [mi valueForProperty:MPMediaItemPropertyTitle]);
}

果然,它打印出了我在音乐应用程序中排队的播放列表!

当然,如果你这样调用这些方法,苹果会拒绝你的应用,但是有一种方法可以hide private API calls from Apple .

关于iOS - 以编程方式获取当前播放的项目队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10092589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com