9

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

我的应用流程是:

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

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

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

4

4 回答 4

5

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

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

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

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

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

于 2010-07-25T22:06:58.147 回答
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");}
于 2010-06-11T13:55:22.483 回答
1

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

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

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

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

于 2010-02-08T14:02:22.570 回答
0
let player = MPMusicPlayerController.applicationMusicPlayer()

player.setQueueWithStoreIDs(["some id"])

player.play()

player.pause()
于 2021-03-16T04:15:14.537 回答