检测音乐是否正在播放?

时间:2010-02-16 16:32:33

标签: iphone uiswitch audio-player

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

4 个答案:

答案 0 :(得分:21)

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

答案 1 :(得分:2)

如果音乐来自您自己的应用,请检查AVAudioPlayer's playing property

如果音乐来自iPod,请检查MPMusicPlayerController's nowPlayingItemplaybackState属性。

答案 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,则此代码仍会在较旧的设备上运行。

答案 3 :(得分:0)

如果您的iTunes声音处于开启状态则会返回“是”,如果声音已关闭iTunes音乐播放器则会变为“否”...因此您可以轻松检查默认MusicPlayer声音是开还是关您需要添加媒体播放器框架Just尝试它会正常工作...... Thx ......:)

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