idleTimerDisabled不工作,因为iPhone 3.0
我用:idleTimerDisabled不工作,因为iPhone 3.0
[UIApplication sharedApplication].idleTimerDisabled = YES;
在多个应用程序的开发
,并在iPhone OS 2.x的运行,从未有过任何问题。他们是时钟应用程序,因此需要不断运行并忽略iPhone的空闲计时器设置。
但是,试图实现与运行OS 3.0的新应用程序相同(并且需要在3.0下部署,因为它使用了一些3.0 API),我发现空闲的Timer被忽略或不一致。
我的应用程序播放iPod库中的音乐,当播放音乐时,不管上述设置如何,都会自动锁定。但是一旦你解锁它,它就不会再次自动锁定,除非你再次播放音乐,在这种情况下,它会在iPhone自动锁定时间设置后再次锁定。
我很惊讶没有人遇到过这个,因为我想它会影响大量的应用程序。
只是为了澄清:
1.上面的代码中的applicationDidFinishLaunching
2.我知道,手机会在Xcode无论测试的设置
时不自动锁定。如果任何人有任何想法我'd非常感谢...
我们的应用程序使用MPMediaPLayer
。我们在ApplicationFinishedLaunching
中也有idleTimerDisabled=YES
代码,如果不受限制,它的工作方式是EXCEPT,并且已经有一个当前正在播放的nowPlayingItem
(或者在应用程序启动时暂停)。很明显,这是所有与Settings -> General -> Autolock
设置为一些定时价值。
通过添加idleTimerDisabled=NO
,紧接着idleTimerDisabled=YES
在代码的其他位之后,我们已经计算出我们可以播放什么音乐似乎可以解决问题。只是将它设置为YES
是不够的..随后的查询总是指出正确的值(YES
)..所以它看起来苹果代码忽略值的设置如果有一个当前的音乐片段,并且不会被您的代码..但确实注意到价值的变化。
这是全部根据iOS 3.0。
听起来像一个错误,文件与雷达 - 我不太感到惊讶,这并没有被看到太多,因为可能没有很多的应用程序试图锁定屏幕打开和播放音乐。
是的 - 我认为这可能是一个错误 - 我会把它归档..谢谢。 – Craig 2009-06-30 12:23:11
具有相同的问题。它可以在设备插入时工作。您可以按下顶部的锁定按钮,然后我的NSTimer随后触发并导致振动。但是,如果在按下锁定按钮时没有插入设备,设备将进入睡眠状态。任何解决方案将不胜感激。
- iCodeblog发布关于idletimer的信息,我说它没有工作,并且开发'cute clock'的人很好地回复。你必须做一次黑客,用NSTimer每10秒钟播放1秒或更长时间的无声音。即使用户点击锁定按钮,设备也会保持唤醒状态。
我开发Seconds - Interval Timer for iPhone and iPod touch,我已经无法解决这个问题。我的应用程序的想法是,人们根据多个时间间隔创建计时器,每个时间间隔可以有自己的播放列表或音轨播放。
在iOS3中,我遇到了无法通过设置idleTimerDisabled = YES禁用空闲计时器的问题。最后,我想出了与Neil相同的解决方案,我会周期性地将它设置为NO,然后立即再次设置为YES。这似乎工作。
我现在正在更新应用程序到iOS4(我知道,iOS5就在附近......),现在我有相反的问题。如果MPMediaPlayer在空闲计时器到达之前更改轨道,则它会被重置。我刚刚在我的应用程序中创建了一个55秒的时间间隔,我的自动锁定设置为一分钟。在50秒钟,屏幕变暗,准备锁定,但在55秒钟音乐改变后,它恢复到完全亮度,然后没有锁定,因为它应该。
总的来说,这个实现看起来好像是flakey。
即使在2015年,使用iOS 8.2,这个错误仍然存在并且踢腿。
这是我的解决方案,使用XCode 6.2。
iPhone - phone goes to sleep even if idleTimerDisabled is YES
基本上,即使是现在,在2015年,只有这样,才能安全地确保该设备不会进入睡眠是重复调用的代码,以保持设备清醒。
-(void)callEveryTwentySeconds
{
// DON'T let the device go to sleep during our sync
[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
}
您在播放音乐时是否正在使用音频会话?我在想,不知何故,当你开始播放音乐时,idleTimerDisabled属性可能会以某种方式重置......也许你的解决方法就像在开始音乐播放之后在你的代码中放置另一个idleTimerDisabled = YES一样简单。 – 2009-06-29 18:58:10
谢谢..是的 - 我尝试过,沿着同样的思路思考。没有区别。 干杯。 – Craig 2009-06-29 20:31:13
“我知道,无论设置如何,xCode测试时手机都不会自动锁定” - 谢谢!我没有意识到这一点,我无法弄清楚为什么我的应用程序不允许手机自动锁定。 – filipe 2011-05-03 00:03:26