检测音乐是否正在播放?

8

我的应用涉及音乐(iPodMusic),有一个UISwitch可以切换播放/暂停。我的目标是能够检测音乐是否正在播放,因此当音乐正在播放时,播放/暂停开关应该显示“播放”,如果没有播放,则显示“暂停”。

4个回答

22
if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying) ...

1
如果您希望您的应用程序在用户启动iPod应用程序时停止发出自己的声音,这也非常有用。例如,如果您正在编写一个游戏,并且您自己的游戏内音乐与用户尝试播放自己的音乐冲突。 - Piku
1
由于iOS 8.0已经弃用了MPMusicControlleriPodMusicPlayer方法,因此必须进行修复:将其替换为systemMusicPlayer - DDPWNAGE

2

1

MPMusicPlayerController仅适用于OS 3.0或更高版本。如果您正在运行2.0,则无法使用。以下是一个代码片段,用于检查您是否正在运行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,则此代码仍可在旧设备上运行。


0

如果您的iTunes声音开启,它会变成“是”,否则它会变成“否”,表示iTunes音乐播放器的声音关闭...因此,您可以轻松检查默认的MusicPlayer声音是否开启或关闭,您需要添加media-player框架,只需尝试一下,它就能正常工作...谢谢...:)

   if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying)
    {
           NSLog(@"yes itune Player Sound is on");
    }
    else
    {
          NSLog(@"NO itune Player Sound is not on");
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接