Как программно перевести мобильный в спящий режим

Мне нужно сделать приложение, которое выключает экран мобильного и уходит в сон программно. Например, если экран включен более 5 минут без user_present, я должен его выключить. Я пытался использовать PowerManager (функция goToSleep() должна делать именно то, что я хочу, но, похоже, она не работает):

PowerManager pm = (PowerManager) m_context.getSystemService(Context.POWER_SERVICE);


  if (pm.isScreenOn() )
   {
    pm.goToSleep(System.currentTimeMillis() + 1000
   }

У меня есть следующее разрешение в моем манифесте:

<uses-permission android:name="android.permission.DEVICE_POWER"/>

Выдает исключение: java.lang.SecurityException: ни пользователь 10068, ни текущий процесс не имеют android.permission.DEVICE_POWER. но у меня есть это разрешение в моем манифесте.

Есть ли другой способ сделать это без рутирования моего телефона?


person Alex    schedule 29.11.2012    source источник
comment
Вы можете взглянуть на это и посмотреть, пригодится ли оно: stackoverflow.com/questions/9561320/   -  person Max    schedule 29.11.2012


Ответы (1)


android.permission.DEVICE_POWER предоставляется только системным приложениям, сторонние приложения не получают этого разрешения.

Если вы не держите wakelock и если вы уменьшите SCREEN_OFF_TIMEOUT , вы сможете автоматически заснуть через 5 минут.

person nandeesh    schedule 29.11.2012
comment
на самом деле это то, что делает приложение, если кто-то держит wakelock, не отпуская его в течение 5 минут, я должен выключить устройство, чтобы сэкономить заряд батареи. Уменьшив SCREEN_OFF_TIMEOUT, я не знаю, решу ли я проблему. - person Alex; 29.11.2012
comment
Если, скажем, приложение электронной почты удерживает блокировку пробуждения, то любое стороннее приложение не должно переводить телефон в спящий режим, это нарушит его функциональность, поэтому я не думаю, что это возможно. - person nandeesh; 29.11.2012