【问题标题】:How to stop MPMusicPlayerController from enabling screen locking如何阻止 MPMusicPlayerController 启用屏幕锁定
【发布时间】:2010-02-08 13:33:10
【问题描述】:

我有一个应用程序需要 iPhone 屏幕保持活动状态(或不活动,取决于用户的选择)。我通过禁用应用程序空闲计时器来做到这一点,在我开始通过 MPMusicPlayerController 播放媒体之前,它工作得很好。由于 SDK 中的错误,这会重新启用空闲计时器,而没有明显的方法可以再次禁用它。

我的应用流程是:

  1. 应用启动
  2. 屏幕一直亮着
  3. <...>
  4. 播放音频文件
  5. 空闲计时器启动
  6. 屏幕关闭

我在后台播放了一个空的音频文件来阻止手机进入深度睡眠,但我真的很想保持屏幕解锁。

有没有人设法解决这个问题?

【问题讨论】:

  • 您是否将idleTimerDisabled 设置为YES
  • 是的。当 MPMusicPlayerController 启动时 idleTimerDisabled 重置为 NO 并且您无法再次禁用它。
  • 这个问题好运吗?尝试了所有解决方案,但都没有奏效。

标签: iphone mpmusicplayercontroller


【解决方案1】:

我遇到了类似的问题,并找到了解决方法。该修复程序也可能对您有用:

我定期(每 10 秒)调用一个方法,它首先将 idleTimerDisabled 设置为 NO,然后设置为 YES。

- (void)calledEveryTenSeconds
{
    [UIApplication sharedApplication].idleTimerDisabled = NO;
    [UIApplication sharedApplication].idleTimerDisabled = YES;
}

仅设置为 YES 并不能解决问题。似乎必须先更改属性才能被 UIApplication 识别。

我的问题是,当我通过耳机遥控器在 iPod 播放器上切换音乐曲目时,屏幕一直变暗。我的猜测是,这与您遇到的问题相同。

【讨论】:

  • henning77,谢谢!我设法使用你的方法让它在我的新应用程序中工作。许多人将问题/问题误解为如何禁用空闲计时器的正常方式。但这是关于 PLAYING MPMUSICPLAYER 的问题。 idleTimerDisabled = NO;确实很关键。没有它就行不通。
【解决方案2】:

您应该简单地关闭空闲计时器。我通常在需要保持“清醒”的视图控制器中做的是:

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

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

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

【讨论】:

  • St3fan,我在应用程序启动时完成了此操作,事实证明手机在音乐开始播放之前不会休眠。正如我所说,一旦 MPMusicPlayerController 激活,它就会重新启用空闲计时器并且您不能再次禁用它
【解决方案3】:

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

[[SoundEngine mainEngine] playMusic];

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

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

【讨论】:

    【解决方案4】:
    let player = MPMusicPlayerController.applicationMusicPlayer()
    
    player.setQueueWithStoreIDs(["some id"])
    
    player.play()
    
    player.pause()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多