Предотвращение случайных перезагрузок при удерживании кнопки питания

Я часто случайно перезагружаю свой Nexus 6, нося его в кармане, потому что кнопки питания нажимаются более 10 секунд.

Учитывая долгое время загрузки, это может быть очень раздражающим.

Я понимаю, почему важно иметь способ принудительной перезагрузки, когда он зависает, хотя у меня еще не было такой проблемы.

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

Возможно, увеличьте время, в течение которого кнопка питания должна быть нажата, или измените ее на комбинацию кнопок (например, увеличение громкости + кнопка питания на 10 секунд) ... что-нибудь, что снизит вероятность срабатывания моего кармана.

Если вы можете получить оборудование и код для изменения BIOS, находящийся на материнской плате вашего телефона, это может быть возможно, но, насколько я знаю, все устройства Android перезагружаются после удержания кнопки питания в течение 10 секунд в качестве своего рода аварийная перезагрузка. Представьте, что ваш телефон завис и не дает перезагрузиться, даже имеет встроенный несменный аккумулятор; вам придется подождать, пока батарея не разрядится, чтобы вы могли снова использовать свой телефон.
@GiantTree Я знаю, почему эта функция существует, и упомянул ее. Мне просто интересно, нашел ли кто-нибудь способ, как настроить прошивку.
Я не могу избежать принудительной перезагрузки напрямую, но я подумал, что если вы можете получать уведомления с помощью вибрации о том, что устройство находится в кармане, а кнопка застряла надолго (максимум 500 мс)? Это можно сделать. Я хочу знать, устройство рутировано?
Хотел сказать Tasker, но не могу найти переменную кнопки питания
@Firelord, это очень интересная идея! Я был бы не против укоренить его, чтобы заставить его работать.
@DanB Вы можете попробовать автоввод с помощью Tasker. В моем ответе ниже я предложил экспериментальный случай. Пожалуйста, посмотрите, сможете ли вы заставить его работать.
@Firelord Я загляну утром, сейчас ищу в Интернете новый телефон. Посмотрите на alcatel onetouch idol s....

Ответы (1)

Я надеялся на некоторую гибкость в тайм-ауте длительного нажатия с помощью AutoInput , но приложения значительно замедляют работу моей ОС, чтобы что-то с ней делать.

В любом случае, все, что я предлагаю, это использовать Xposed Additions (бесплатно/платно; требуется Xposed Framework ; если у вас Android 5.x, вам нужно будет прошить некоторые файлы из пользовательского восстановления. См. эту ветку XDA от rovo89 для такого случая).

Нам также нужен Tasker (платный, 7-дневная бесплатная пробная версия).

инструкции

(Проверено на Android 5.0.2 и 5.1.1)

  1. Установите оба приложения → активируйте модуль Xposed Additions → запустите Xposed Additions.

  2. Коснитесь кнопок → установите ползунок задержки длительного нажатия на максимум (500 мс) → Добавить новый ключ → нажмите кнопку питания, чтобы выбрать его → Питание

  3. Нажмите «Добавить новое условие» → «Выключение экрана» → «Выключение экрана» → «Включить длительное нажатие» → «Ярлык» → «Ярлык задачи» → «Новая задача» → назовите задачу.

    Примечание. Вы можете попробовать ярлык MacroDroid от MacroDroid вместо ярлыка задачи. Бесплатная версия ограничена одним действием на макрос, поэтому вы не получите никакой гибкости, но здесь это приемлемо.

  4. Для вашей задачи действие будет таким:

    • Оповещение → ВибрацияВремя : выберите время вибрации (в миллисекундах).

    Возможно, вибрации на 1000 мс вам будет недостаточно. В этом случае добавьте комбинацию действий. Например, в дополнение к последнему действию «Вибрация» вы также можете сделать:

    • Задача → Подождите → выберите MS или/и Секунды , немного превышающие миллисекунды, выбранные в последнем действии вибрации.

      Ждать важно, потому что, если вы добавите непрерывные действия вибрации, вы в конечном итоге пропустите почти все из них, кроме первого. Таскер не ставит вибро запросы в очередь, как мне кажется.

    • Теперь добавьте еще одно действие «Вибрация» и скопируйте и вставьте весь цикл столько раз, сколько хотите.
  5. Выберите значок для своей задачи, и все готово.

Теперь вы можете протестировать свое решение.


Экспериментальный

Для пользователей, у которых автоввод работает удовлетворительно, вы можете эмулировать длительное нажатие клавиши. Я протестировал свое решение на кнопке увеличения громкости, и оно сработало отлично. Ну почти !

Для Таскера:

Профиль 1: Событие → Плагин → Автоввод → Ключ → Конфигурация:

  • выберите свой ключ в разделе «Ключи»
  • выберите Key Action to Key Down

Задача 1: Действия:

  1. Переменная → Набор переменных → Переменная: %Set→ Кому:0
  2. Задача → Подождите → выберите МС или Секунды для желаемого тайм-аута длительного нажатия. Выберите 1 секунду для экспериментальных целей.
  3. Задача → Если →%Set eq 0
  4. Оповещение → Вибрация → Время: 1000 мс

Профиль 2: Событие → Плагин → Автоввод → Ключ → Конфигурация:

  • выберите свой ключ в разделе «Ключи»
  • выберите Key Action to Key Up

Задача 2: Действия:

  1. Переменная → Набор переменных → Переменная: %Set→ Кому:1

Используйте действие Key Suppress из Plugin → AutoInput → Modes, где это необходимо. Кроме того, я еще не экспериментировал с выключенным экраном.

Теперь теория: поток выглядит следующим образом:

  • Когда выбранная вами клавиша (скажем, Key-X) будет нажата, активируется профиль 1.
  • Когда ключ будет отпущен, активируется профиль 2.
  • Мы знаем, что для длительного нажатия клавишу нужно непрерывно нажимать в течение некоторого времени.
  • Теперь, если я долго нажимаю клавишу-X, то в это время профиль 2 не будет активироваться, и поэтому я могу установить %Setв 0профиле 1 → дождаться тайм-аута длительного нажатия (чуть меньше) → проверить, %Setвсе еще 0( %Setстал бы, 1если ключ освобождается), а затем выполните действие «Вибрация».

Простой! Дайте мне знать, если это работает для клавиши питания.