如何阻止MPMusicPlayerController启用屏幕锁定

时间:2010-02-08 13:33:11

标签: iphone mpmusicplayercontroller

我有一个应用程序要求iPhone屏幕保持活动状态(或不支持,具体取决于用户选择)。我已经通过禁用应用程序空闲计时器来完成此操作,该计时器正常工作,直到我开始通过MPMusicPlayerController播放媒体。由于SDK中的错误,然后重新启用空闲计时器,没有明显的方法再次禁用它。

我的应用流程是:

  1. 应用程序启动
  2. 屏幕保持
  3. < ...时间过去了......>
  4. 播放音频文件
  5. 空闲计时器启动
  6. 屏幕关闭
  7. 我在后台播放一个空的音频文件以阻止手机深度睡眠,但我真的想保持屏幕解锁。

    有没有人设法找到解决方法?

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

我找到了解决这个问题的方法。在开始播放音乐后约5秒钟内调用禁用idleTimer的方法。这有点像黑客,但它是一种解决方法。

[[SoundEngine mainEngine] playMusic];

[self performSelector:@selector(setIdleTimeDisabled) withObject:nil afterDelay:5.0];

- (void) setIdleTimeDisabled {
[UIApplication sharedApplication].idleTimerDisabled = YES;
NSLog(@"Setting idleTimer to TRUE");}

答案 2 :(得分:0)

您应该只是关闭空闲计时器。我通常在需要保持“清醒”的viewcontroller中做的是:

- (void) viewWillAppear:(BOOL)animated
{
    [[UIApplication sharedApplication] setIdleTimerDisabled: YES];
}

- (void) viewWillDisappear: (BOOL) animated
{
    [[UIApplication sharedApplication] setIdleTimerDisabled: NO];
}

这将确保屏幕不会因用户不活动而被锁定。

答案 3 :(得分:0)

let player = MPMusicPlayerController.applicationMusicPlayer()

player.setQueueWithStoreIDs(["some id"])

player.play()

player.pause()