Ранее я уже писал о том, как отключить пробуждение телефона при нажатии кнопки Home. Не у всех это получилось, но, подозреваю, что причиной того стало сразу несколько факторов:
- Неправильные копирование и вставка. Дело в том, что я, обычно, оформляю строку, которую надо скопировать, в виде списка. Возможно, в этом была ошибка, т.к. люди копировали не только строку, но и маркер списка. Сегодня я, ради эксперимента оформлю эту строку по-другому;
- При редактировании файлов на компьютере, например, в блокноте, переформатировались концы строк. Блокнот приводил их из формата unix к формату windows и парсер андроида просто не мог разобраться, где же заканчивается строка и что это за строки такие из одного байта перевод строки;
- Ошибка прав доступа к файлу при обратном копировании. Права должны быть 644. При редактировании файлов поверх плагина к Тоталу всё выставляется правильно, если только телефон рутован и установлен busybox.
- Ну и лишним подтверждением того, что рецепт верен, является то, что у меня это всё великолепно работает и телефон больше не просыпается от нажатии кнопки домой.
Давайте теперь поговорим, для чего же нам может понадобиться сделать отбой вызова по кнопке питания? Да, в настройках спецвозможностей можно настроить кнопку питания, чтобы она отбивала вызов. Но она сможет завершить уже начавшийся вызов. Иными словами, если вы хотите скинуть звонящего вам абонента без начала разговора, сделать это с помощью кнопки питания не получится. Наконец, не знаю, как у вас, а у меня после шаманства с кнопкой домой теперь нужно нажимать кнопку питания дважды чтобы сбросить разговор. Первое нажатие включит экран, а второе, собственно, завершит разговор. Это кажется мне не очень удобным, а посему давайте сделаем так, чтобы кнопка питания отбивала вызов сразу, причём совершенно неважно, состоявшийся он, или нет.
Сразу скажу, что рецепт этого всего не мой, прочитал я о нём в конференции BlindDroid, так что тамошним профи моя благодарность. Я же только, так сказать, упорядочу всё написанное и приведу к удобной форме.
И так, для того, чтобы у нас всё получилось, должны выполниться несколько условий:
- Телефон должен быть рутован;
- Если вы будете править файлы на компьютере, что я рекомендую, у вас должен быть установлен текстовый редактор, понимающий форматы строк unix, например, Akelpad. Ни в коем случае не используйте для редактирования блокнот!!!;
- Настоятельно рекомендую выполнять это всё через плагин к тоталу, он многие операции сделает за вас и это будет достаточно удобно;
- Проверьте, что на вашем рутованном телефоне установлен busybox. Если он не установлен, установите, например, бесплатную версию с плеймаркета.
- Убедитесь, что у вас установлен Total Commander и плагин к нему для управления android-устройствами. Если либо тотал, либо плагин не установлены, скачайте их, например, вот от сюда. Прямых ссылок не даю намеренно, ибо наши с вами шаманства подразумевают вмешательство в прошивку смартфона и, если вы самостоятельно сможете скачать тотал, установить и настроить плагин, значит и остальное у вас получится, а, если не сможете, значит либо вам ещё рановато, либо, возможно, наши мастера-подкастеры напишут толковый и пошаговый подкаст.
Ну а теперь давайте начнём. Я предполагаю, что тотал с плагином у вас уже установлены, отладка по usb включена, разрешение вашему компьютеру на отладку по usb предоставлено. И так, поехали
- Подключите ваш смартфон кабелем к порту usb вашего компьютера;
- Запустите тотал, нажмите alt+f1, или alt+f2, чтобы открыть диалог выбора диска на левой, или на правой панели соответственно и в открывшемся диалоге нажмите клавишу обратного слеша “\“;
- В открывшейся панели найдите папку adb и зайдите в неё, это и будет папка вашего плагина;
- В этой папке найдите папку с множеством букв и цифр, это и будет ваш смартфон;
- Зайдите в эту папку. Будте внимательны, телефон может запросить разрешение на отладку по usb. Обязательно предоставьте это разрешение, отметив галочку “больше не спрашивать”, указав тем самым, что вы на постоянной основе доверяете вашему компьютеру;
- Теперь найдите папку system и зайдите в неё. Внимание. В этот момент на телефоне может появиться запрос прав суперпользователя. Обязательно предоставьте такие права, причём на постоянной основе;
- Зайдя в папку system, найдите в ней папку usr и войдите в неё. При этом, если на предыдущих этапах всё было сделано правильно, то запрос прав суперпользователя больше не появится;
- Зайдя в папку usr найдите в ней папку keylayout, но пока не входите в неё;
- Скопируйте папку keylayout в безопасное место. Это нужно для того, чтобы, если что-то пойдёт не так, вы могли вернуть всё назад. Вопрос копирования в тотале выходит за рамки этой статьи;
- Теперь зайдите в папку keylayout и осмотритесь. Вы увидите в ней примерно такие файлы: AVRCP.kl, Generic.kl, gpio-keys.kl. Этот список файлов неисчерпывающий, т.е. у вас могут быть и ещё файлы, кроме этих, но эти файлы должны быть обязательно. Их мы и будем править;
- Теперь поочерёдно по клавише f4 открывайте каждый из вышепроцитированных файлов и выполняйте поиск числа 116. В akelpad, который по умолчанию будет у вас открываться на редактирование, поиск выполняется по ctrl+f;
- Найдя строку, содержащую код клавиши 116, замените её вот на такую:
key 116 ENDCALL WAKE
Будьте внимательны при копировании и вставке!!! Если же такой строки в каком-то файле нет, просто скопируйте её в самый конец файла;
- После редактирования каждого файла не забываем сохраняться, нажимая f2. Когда вы закроете Akelpad по клавише esc, или alt+f4, Тотал вам скажет, что файл был изменён и предложит сам закачать его назад в телефон. Разумеется на это предложение тотала отвечайте вашим однозначным согласием;
- Если окошко копирования будет висеть больше 2-3 секунд, обратите внимание на ваш смартфон, возможно, на нём появился запрос прав суперпользователя, которые, естественно, надо будет предоставить. Если запрос прав суперпользователя не появился, но окошко копирования так и не исчезло, просто нажмите кнопку питания, не разблокируя экран и окошко сразу же пропадёт, а телефон уведомит вас, что права суперпользователя предоставлены для busybox и что атрибуты файла установлены в значение 644;
- После того, как вы проделаете вышеуказанную процедуру со всеми файлами, указанными выше, отсоедините смартфон от компьютера и перезагрузите его.
Теперь попробуйте позвонить на ваш смартфон и во время звонка, не отвечая на него, нажмите клавишу питания. Вызов должен сброситься.
Если после перезагрузки у вас что-то не заработало, попробуйте ещё раз просмотреть все файлы. Возможно, что-то у вас не сохранилось. Если всё созхранилось, но ничего так и не заработало, то попробуйте поискать строку с кодом клавиши 116 в других файлах и заменить, либо дописать её по аналогии с тем, как это было указано выше.
Способ проверен несколькими участниками конференции BlindDroid и мной лично. Способ точно работает на телефонах Samsung, работающих под управлением Android 4.2.2 и 4.4. Если у вас всё заработало, или наоборот не заработало, напишите, пожалуйста, об этом в комментариях.