【发布时间】:2023-08-14 22:01:01
【问题描述】:
我的应用程序涉及音乐(iPodMusic),并且有一个 UISwitch 切换播放/暂停。我的目标是能够检测音乐是否正在播放,因此播放/暂停开关可以在播放音乐时说“播放”,如果不是,则“暂停”。
【问题讨论】:
标签: iphone uiswitch audio-player
我的应用程序涉及音乐(iPodMusic),并且有一个 UISwitch 切换播放/暂停。我的目标是能够检测音乐是否正在播放,因此播放/暂停开关可以在播放音乐时说“播放”,如果不是,则“暂停”。
【问题讨论】:
标签: iphone uiswitch audio-player
if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying) ...
【讨论】:
MPMusicController 的 iPodMusicPlayer 方法,必须修复此问题:将其换成 systemMusicPlayer。
如果音乐来自您自己的应用,请查看AVAudioPlayer's playing property。
如果音乐来自 iPod,请检查 MPMusicPlayerController's nowPlayingItem 或 playbackState 属性。
【讨论】:
MPMusicPlayerController 仅适用于 OS 3.0 或更高版本。如果你运行的是 2.0,那你就不走运了。这是一个代码 sn-p,它检查您是否正在运行 3.0 或更高版本,然后才尝试创建 MPMuiscPlayerController
bool playerDetectedAndPlaying = false;
NSString *reqSysVer = @"3.0";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending){
Class MusicPlayerController = NSClassFromString(@"MPMusicPlayerController");
if (MusicPlayerController){
id myMusicPlayerController = [[MusicPlayerController alloc]init];
id MusicPlayer = [[myMusicPlayerController class] iPodMusicPlayer ];
if ( [ MusicPlayer playbackState ] == MPMusicPlaybackStatePlaying ) {
playerDetectedAndPlaying = true;
}
}
}
您必须针对 3.0 SDK 进行编译,但如果您将部署目标设置为 2.0,此代码仍可在旧设备上运行。
【讨论】:
如果您的 iTunes 声音已打开,则为“是”,如果 iTunes 音乐播放器关闭,则为“否”...因此您可以轻松检查默认的 MusicPlayer 声音是打开还是关闭您需要添加媒体播放器框架只是试试吧,它会正常工作的......谢谢......:)
if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying)
{
NSLog(@"yes itune Player Sound is on");
}
else
{
NSLog(@"NO itune Player Sound is not on");
}
【讨论】: