В Android есть блокировка включения, чтобы включить экран. Итак, есть ли эквивалент Mac для сохранения экрана для ПК под управлением Mac OS X? Если это так, то какие API-интерфейсы?Блокировка от вторжения для Mac OS X
ответ
Да, в OS X это делается на уровне ОС через IOPMLib
, подсистему управления питанием, которая также является подсистемой, которая управляет AppNap
под OS X Mavericks.
Вот пример того, что мы делаем при выполнении тяжелых вычислений. В нашем случае мы не даем процессору спать, но вы можете предотвратить отображение сна из-за использования kIOPMAssertionTypePreventUserIdleDisplaySleep
, где мы использовали kIOPMAssertionTypePreventUserIdleSystemSleep
.
@property IOPMAssertionID currentPowerAssertion;
- (void)assertPowerRequirement:(NSString*)reason
{
// don't re-assert if we're already here
if (_currentPowerAssertion)
return;
IOPMAssertionID assertionID;
IOReturn success = IOPMAssertionCreateWithName(
kIOPMAssertionTypePreventUserIdleSystemSleep, // prevent CPU from going to sleep
kIOPMAssertionLevelOn, // we are turning this on
(__bridge CFStringRef)reason, // here's why
&assertionID); // reference for de-asserting
if (success == kIOReturnSuccess) {
_currentPowerAssertion = assertionID;
} else {
NSLog(@"Power assert failed");
}
}
- (void)deassertPowerRequirement
{
if (!_currentPowerAssertion)
return;
IOReturn success = IOPMAssertionRelease(_currentPowerAssertion);
if (success !=kIOReturnSuccess) {
NSLog(@"Power de-assert failed");
}
_currentPowerAssertion = 0;
}
В данном случае, это в нашем App делегата, и мы имеем currentPowerAssertion
свойства следить. Поскольку мы используем только одно состояние утверждения и только для одной цели, мы используем единый механизм хранения. Тем не менее, вы можете утверждать несколько раз из разных частей вашей программы, если вы балансируете утверждения с де-утверждениями и используете соответствующие reason
. В спецификациях Apple указывается причина, а не NULL, и предлагайте, чтобы имя и задача приложения были описаны в утверждении.
Важно, чтобы вы отказались от этого, когда вам это больше не нужно, хотя утверждения сохраняются в каждом приложении, поэтому, когда ваше приложение завершается, они автоматически будут отменены.
- 1. Блокировка от вторжения не поддерживает приложение
- 2. SIGAR Для Java в Mac OS X Кажется, это блокировка
- 3. Блокировка от вторжения, требуемая для BroadcastReceiver, когда телефон спит?
- 4. MapKit для Mac OS X?
- 5. Шаги для Mac OS X
- 6. Сборка Mac OS X
- 7. Латекс для Mac OS X
- 8. Eclipse для Mac OS X
- 9. UIPopoverController для Mac OS X?
- 10. ldconfig для Mac OS X
- 11. SetWindowsHookEx для Mac OS X?
- 12. Mac OS X Linker
- 13. Mac OS X PackageMaker
- 14. Обновление MAC OS X
- 15. Выход звука Mac OS X
- 16. Создание альтернативы bash для Mac OS X
- 17. Makefile для чайников? Mac OS X
- 18. Core Animation Instrument для Mac OS X?
- 19. R window desktop для Mac OS X
- 20. Установка MySQL Gem для Mac OS X
- 21. SimpleFTPUpload on Mac Os X
- 22. Альтернатива FinalBuilder для Mac OS X?
- 23. Альтернативная парадигма для разработки Mac OS X
- 24. Mac OS X - запуск приложения для монитора?
- 25. Порт iPhone приложение для Mac OS X
- 26. Java 8 для использования от IntelliJ на Mac OS X
- 27. Доступность для NSWindow, отображаемая от агента в Mac OS X
- 28. Разверните приложение для Azure от Monodevelop на Mac OS X?
- 29. Python на Mac OS X
- 30. Сетевая безопасность для MAC-OS X