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

有帮助吗?

解决方案

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

其他提示

如果音乐来自您自己的应用程序,请检查 AVAudio播放器 playing 财产.

如果音乐来自 iPod,请检查 MPMusicPlayerController 的 nowPlayingItem 或者 playbackState 财产。

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,此代码仍然在旧的设备上运行。

它去是如果你的iTunes的声音是对否则它会没有,如果声音已关闭iTunes音乐播放器......所以,你可以很容易地查看默认MusicPlayer声音是打开或关闭时需要只需添加媒体播放器框架试试看它会正常工作,THX .... ...:)

   if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying)
    {
           NSLog(@"yes itune Player Sound is on");
    }
    else
    {
          NSLog(@"NO itune Player Sound is not on");
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top