Можно ли скрипты андроид

Можно ли скрипты андроид

Скрипты, твики Android. Все устройства — Android scripts and tweaks

Я не несу ответственности за закирпиченные телефоны, вся информация взята с сайта партнёров. Если вы даже понятия не имеете что это такое — покиньте тему.

Нужно наличие папки Init.d изначально, простое создание и запихивание туда твиков не дадут никакого эффекта!

С недавних пор авторы прошивок начали лазить по XDA-Developers и добавлять в свои прошивки разные твики и скрипты взятые оттуда тем самым улучшая что-либо, ниже предложена большая часть твиков, их установки и тому подобное. Я разделил все твики и скрипты на несколько уровней сложности при установке.

Первый уровень. Редактирование Build.prop с помощью Root Explorer, но я рекомендую скидывать Build.prop к себе на компьютер и редактировать оттуда, так как в в файле уже могут находится строки которые вы хотите добавить, а двойное сочетание строк может привести к увеличению времени загрузки телефона, а если там вбиты ещё и разные значения то у вас есть все шансы залипнуть на бутлого.

Всем файлам в папке init.d нужно выставить соответствующие права.

УРОВЕНЬ 1. BUILD.PROP

  1. Форсированное внесение лаунчера в память

Увеличить качество картинок до 100%

Увеличение размера HeapSize (Dalvik-Cache?) цифра зависит от мощности вашего телефона(мощнее — больше)

Акселерация видеочипа для прорисовки системы (за уточнение спасибо пользователю UT36104)

Уменьшение «лага» при наборе номера(цифры иногда не сразу появляются, если вы этого не чувствуете то не добавляйте)

Увеличение скорости/отзывчивости при прокрутке

Убрать иконку отладки на статусбаре(?)

Акселерация реакции на прикосновения(Требует больше заряда)

Улучшение скорости сети

Еще твики интернета Тут

Убирание чёрного экрана после звонка(не все девайсы)

Исправление некоторых ошибок в приложениях( Может упасть производительность системы )

Отключаем пробуждение телефона путём нажатия на кнопки громкости

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

Специфичные скрипты только для устройств LG

Lag Nullifier by ZеppelinRox
Nullifier by ZeppelinRox.
Якобы ещё уничтожитель лагов, автор утверждает что «Некоторые готовы поклясться что он чудесен, некоторые же говорят что разницы нет»

gpu дает больше плавности и улучшает отзывчивость тача, улучшает качество воспроизводимого видео, но садит батарею активнее.

Дает право системе самой динамически решать что использовать gpu или программные средства для отрисовки графики(а иногда и то и другое). Для лаунчера это может и подойдет, но с некоторыми программами могут случиться траблы(артефакты).

Улучшает качество передаваемой и принимаемой речи во время разговора, т.е убирает шумы(отписались 4-5 человек, говорят лучше слышно стало).

Добавление от пользователей finist1 и dmitrypershin

После сохранения build.prop, сделайте reboot в recovery и выполните wipe обоих caches .
Reboot. Готово.

Чтобы отменить этот tweak удалите из build.prop добавленные ранее строки ,
reboot recovery

Затем wipe оба caches и reboot.

Уровень 2. Добавление файлов в папку init.d
Берём образец файла LST.zip ( 158.33 КБ )
Добавляем нужную команду в файл и обзываем его например «12Tweaks» и кидаем в init.d.
Нельзя вводить все команды в один файл — эффекта не будет.

  1. Внимание. Каждый файл в init.d должен начинаться со строки:

strict minfree handler tweak(?)

Дополнения от пользователей Ⅳ представлены ниже, всю информацию о них спрашивать у тех кто её выложил!

  1. Juwe’s RAM Opimization Script (От себя: да, приложения начали кушать меньше, но работа(переход из задачи в задачу напр.) приложений по ощущениям снизилась на 15%)

Автор утверждает что это данный скрипт значительно улучшит мультитаскинг нашего телефона, есть Видео!
1. Скачиваем файл Juwes_RAM_Script.zip — Juwes_RAM_Script.zip ( 475 байт )

2. Распаковываем его в init.d, в Root Explorer выставляем права «777» т.е. все галки
3.Ребутимся

# Move dalvik-cache to /cache

if [ ! -d /cache/dalvik-cache ]
then
busybox rm -rf /cache/dalvik-cache /data/dalvik-cache
mkdir /cache/dalvik-cache /data/dalvik-cache
fi

busybox chown 1000:1000 /cache/dalvik-cache
busybox chmod 0771 /cache/dalvik-cache

# bind mount dalvik-cache so we can still boot without the sdcard
busybox mount -o bind /cache/dalvik-cache /data/dalvik-cache
busybox chown 1000:1000 /data/dalvik-cache
busybox chmod 0771 /data/dalvik-cache

Почему HTC по сравнению с Motorola показывает такие большие результаты в Quadrant?
Точно работает на моторолах, на других аппаратах не проверял.

mainbord Дата • 31.03.2011, 19:15
Quadrand — это синтетический тест, и реальной производительности он не отражает. Прошивки HTC оптимизированы под Quadrant, поэтому и выдают такие большие результаты.

а) Увеличение очков в quadrant на 600, возможно производительность вырастит где-нибудь ещё.
Спойлер (+/-)
Я все делал прямо в телефоне, через root explorer
Но вы можете выгрузить /system/build.prop и поменять заветные свойства на компьютере, если не уверены в своих силах.

1) Заходим в папку /system/
2) Монтируем систему, как rw
3) Долгий тап по build.prop
4) В контекстном меню выбираем пунт — Open in Text Editor
5) Находим заветные строки (ближе к концу, примерно на 80% документа)

6) Меняем false на true
7) Сохраняем файл обратно
8) Монтируем систему обратно в ro
9) Перезагружаем телефон

б) Патч повышающий производительность при обработке 3D графики. После установки последние два теста в Quadrant идут без тормозов и глюков.Тест 3D выдаёт в 2 раза больше. (Источник)
— Запускаем RootExplorer — заходим в папку /system/lib/egl
— Переводим в режим чтение/запись
— Открываем в текстовом редакторе файл egl.cfg
— Прописываем вместо появившейся строки: 0 1 POWERVR_SGX530_125
— Перезагружаемся.

После этих манипуляций, разгона и прошивки Froyo, Defy показывает в Quadrant 2700-3000 очков. Но после этих действий могут возникнуть глюки, некоторые пользователи жалуются на неработоспособность видео.
Benchmark — Результаты

Не удается найти некоторые приложения в маркете, что делать?

Должно работать на любом аппарате.

Не находит некоторые приложения на рынке, хотя эти приложения совместимы с аппаратом. Это обычно бывает из-за того, что прошивка неофициальная (или стоковая 2.3). Для того, чтоб маркет «увидел» программы, которые «видел» раньше на стоковых прошивках, нужно изменить некоторые строки в /system/build.prop для того, чтоб маркет принимал вашу прошивку за стоковую
Например, у вас установлен CyanogenMod 7 RC1.5 (Android 2.3.5). Открываем каким-либо проводником с рут доступом файл /system/build.prop и ищем строки
Код
ro.build.description=umts_jordan-user 2.3.5 JOREM_U3_3.4.2-179-4 1315058180 release-keys
ro.build.fingerprint=MOTO/MB525_JOREM_U3/umts_jordan/jordan:2.3.5/3.4.2-179-4/1315058180:user/release-keys

Меняем их на следующие:

Сохраняем изменённый файл и проверяем права (должны быть rw-r—r—), делаем вайп кешей.
Попробуйте установить время вручную на 11:55 и пусть оно перйдёт за полночь. Проверьте маркет снова. Если вы все еще не видите приложений, то есть два варианта:
1. нужно сохранить данные программ с помощью титаним бекап и сделать полный вайп, затем восстановить данные.
2. Если у вас кастомная прошивка, которая устанавливается через CWM, то нужно поправить файл /system/build.prop в исходнике прошивки, удалить файлы подписи (файлы CERT.RSA, CERT.SF и MANIFEST.MF, лежащие в папке [ваша прошивка].zip/META-INF/) и перепрошить телефон снова, без полного вайпа (только вайп кешей).В этом случае потерь данных можно избежать.

Как улучшить работу GPS?
должно работать на всех аппаратах

Подредактировал файл /etc/location.cfg следующим образом:

Читайте также:  Ozi навигатор для андроид

Удалил файл /data/location/location.cfg
В настройках точки доступа в тип APN дописал через запятую supl, в общем у меня там теперь default,dun,supl
Перезагрузка.
В программе GPS Status: Menu — Tools — Manage A-GPS state сначала Reset, затем Download.

Сообщение отредактировал Trykath — 27.09.21, 16:10

А вообще автор темы — молодец. Хорошую и полезную тему открыл :thank_you: .

От себя могу добавить скрипт переноса дальвик кэша в /cache 🙂 (для увеличения места под установку пользовательских приложений), вот он:
—————————————————————————-
#!/system/bin/sh
#
# Move dalvik-cache to /cache

if [ ! -d /cache/dalvik-cache ]
then
busybox rm -rf /cache/dalvik-cache /data/dalvik-cache
mkdir /cache/dalvik-cache /data/dalvik-cache
fi

busybox chown 1000:1000 /cache/dalvik-cache
busybox chmod 0771 /cache/dalvik-cache

# bind mount dalvik-cache so we can still boot without the sdcard
busybox mount -o bind /cache/dalvik-cache /data/dalvik-cache
busybox chown 1000:1000 /data/dalvik-cache
busybox chmod 0771 /data/dalvik-cache
——————————————————————————-
код просто скопировать создать пустой файл в init.d, закинуть туда, присвоить права файлу и ребутнуть девайс.
Найду еще что интересного — выложу 😉

вот еще скриптики для init.d(правда я их не пробовал, но должно работать):
Данный скрипт ставит частоту при выключенном экране(известный всем профиль Screen Off из SetCPU) и при включенном(рабочее состояние).

Как поставить и редактировать:

сами скрипты:
cpuclock.rar ( 1.54 КБ )

scripts.rar ( 636 байт )

Кто проверит — отпишитесь! если найдете вариант по-лучше — также отпишитесь)

Задумка создать такую тему интересная, но я считаю что шапка должна разбиваться на версии ядер и андроида!

Во первых все твики и скрипты которые мы все юзаем не на всех аппаратах работают!

Твики с Build.prop на прямую связаны с ядром, и те твики которые работают на Р500 с 32/35 ядром в большинстве случаев не будут работать с ГТ540 у которого 29е, так же и на других телефонах!
Такая же ситуация и со скриптами, за исключение тех которые просто чёта там создают или чёта переносят, как например скрипт переноса дальвик кэша в cache который выложил scorpio92, который в свое время выложил Я в своей теме SOFT-MOD прошивка LG GT540 by MMXTREM , есть там в шапке такой архивчик http://4pda.to/forum/dl/post/933727/addons.zip , там еще и скрипт — Auto zipaling, а если пошуршать по теме то можно найти еще и Auto fix permission. (приложил)

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

Вот к примеру скрипт cpuclock от Р500 что выложен выше, так же может не корректно работать на разных версиях того же 32/35 ядра, так как там вбиты все доступные частоты для разгона, а каждый ромодел может добавить свои или переделать, потому этот скрипт не заработает на ГТ540, тем более на других телефонах.
Я это все веду к тому что здесь каждый твик и скрипт индивидуальный для каждого телефона и для каждого ядра! А в наше время уже столько ковырятелей развелось, что можно утонуть в море Ядер и Прошивок!

И не забываем, что скрипты без включения поддержки в рамдиске не будут работать на простых ядрах!

А еще стоит добавить ссылку на Бузибокс который очень необходим для всех этих манипуляций!

Сообщение отредактировал miroslav_mm — 05.10.11, 09:44

Всем привет!
Я тут писал недавно, что в инит.д добавляю строчку с командой копирования дата\дата (данные прог бекаплю — браузера там смс итд)
Сегодня наконец разобрался с бинарником ZIP и могу сразу автоматом свой бекап в зип упаковывать (в апдейт). Вот только они с одним названием получаются. Плохо.
Подскажите как сделать, чтоб название файла другое задавалось? Например дата/время.

Кому надо вот зип: zip.zip ( 220.77 КБ )
(говорят некачается)
вот другой zip.rar ( 107.09 КБ )

Copyright © 1990-2008 Info-ZIP — Type ‘zip «-L»‘ for software license.
Zip 3.0 (July 5th 2008). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
The default action is to add or replace zipfile entries from list, which
can include the special name — to compress standard input.
If zipfile and list are omitted, zip compresses stdin to stdout.
-f freshen: only changed files -u update: only changed or new files
-d delete entries in zipfile -m move into zipfile (delete OS files)
-r recurse into directories -j junk (don’t record) directory names
-0 store only -l convert LF to CR LF (-ll CR LF to LF)
-1 compress faster -9 compress better
-q quiet operation -v verbose operation/print version info
-c add one-line comments -z add zipfile comment
[email protected] read names from stdin -o make zipfile as old as latest entry
-x exclude the following names -i include only the following names
-F fix zipfile (-FF try harder) -D do not add directory entries
-A adjust self-extracting exe -J junk zipfile prefix (unzipsfx)
-T test zipfile integrity -X eXclude eXtra file attributes
-y store symbolic links as the link instead of the referenced file
-e encrypt -n don’t compress these suffixes
-h2 show more help

Сообщение отредактировал finist1 — 07.10.11, 15:55

Источник

Можно ли скрипты андроид

Скрипты на shell под Android

Тема посвящена созданию, отладке скриптов на шелле, а также освоению и изучению всевозможных утилит командной строки Андроида.
Для полноценной реализации желаемого под Андроидом как правило понадобятся root-права и busybox.
Данная тема выросла из темы Tasker (родительская тема), поэтому не удивляйтесь, если Вас внезапно отправят туда. (Tasker — это шелл в Андроиде.) Из данной темы выросла дочерняя тема Ядро Linux изнутри, все вопросы по ядру следует задавать в ней.

В теме нет куратора. Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).
До назначения куратора, по вопросам наполнения шапки, обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.

Сообщение отредактировал derak1129 — 22.06.20, 23:05

Для начала перетащу своё сообщение из темы Таскера для лучшего понимания вопроса, о чём речь, и как можно применить.

# помощь урок таскер tasker пример шелл shell перехват аппаратных кнопок

Описание примера Работа shell-скрипта для перехвата аппаратных кнопок телефона.

Знатокам команд ОС linux и их специфики — не смеяться.

Нужен рут и busybox .

Всесторонняя поддержка была оказана уважаемым username11, где я порой только нажимал на кнопки, следуя множеству его мудрых советов.
Данный пример — оффтоп! 😀 потому что таскер в нём не участвует. Совсем. Только шелл, только хардкор. Пример кстати рабочий))
Так как это только пример, каждый может растащить его на множество кусочков и использовать нужные части в связке со своими нуждами.

Читайте также:  Unblock origin для яндекс андроид

Вообще, текста будет много, потому что я болтун..

Приступим к делу. Вот результирующий пример, и сразу напишу, что он делает, а потом разбор:

Итак, эта строчка (это ОДНА строчка) запущенная в терминале, или через Задачу Таскера «Run script» запускается в память (и висит там! терминал можно закрывать) и делает следующее: Она отслеживает нажатие аппаратной кнопки Громкость Вниз (думаю на большинстве Xperia заработает тоже, официально отлажено под Xperia Ray) при выключенном экране, и включает (и выключает) фонарик.

Начнём, пожалуй, с перехвата кнопок. Как наиболее интересующую общественность возможность. Надо не забывать при этом, что штатные функции телефона, происходящие при нажатии той или иной кнопки, телефоном параллельно ловятся и функции отрабатывают. Так что, повесить исключительно «свои» полезняшки на нажатия не получится. Почему я и упростил в процессе изучения перехвата себе задачу — реагирую я на кнопки только при выключенном экране. При штатной блокировке телефон не реагирует на кнопки громкости при выключенном экране.

Вообще, получается красиво: нажимаешь качельку громкости и МГНОВЕННО включается фонарь, а экран при этом остаётся выключенным.

Отладка скрипта, это собственно 99.9 процента всего времени, потраченного на, поэтому гораздо удобнее «общение» будет проводить в проводном или беспроводном adb. Вертеть варианты отладки через терминал телефона утомительно. (а отладки будет много).

Часть 1. Перехват. Теория.

Итак, перехват. Подглядывать за нажатиями кнопок мы будем программой (консольной текстовой программой) «ПолучитьСобытие», getevent. Можно просто набрать (с рут правами) в терминале имя команды и завороженно смотреть на бегущие строки))
# getevent

Да, вот такие пачки на каждое действие!
0004 0004 00000004
0001 0072 00000001
0000 0000 00000000
0004 0004 0000000c
0000 0000 00000000
0004 0004 00000014
0000 0000 00000000
0004 0004 0000001c
0000 0000 00000000
0004 0004 00000024
0000 0000 00000000

0004 0004 00000024
0000 0000 00000000
0004 0004 00000004
0001 0072 00000000
0000 0000 00000000
0004 0004 0000000c
0000 0000 00000000
0004 0004 00000014
0000 0000 00000000
0004 0004 0000001c
0000 0000 00000000

Так система (а мы подглядываем за реальными кодами, которые обрабатывает и система) различает нажатия, отжатия, а так же — _долгие_ нажатия, если они есть. То есть, если ловить «Долгую громкость вниз» — то это всё ручками, самим засекать сначала нажатие, и какая была пауза до отжатия, ну, до удержания, да. А только потом вызывать своё действие. До этого у меня пока руки не дошли, но есть такой ключик ‘-t’ — показывать временные отметки каждого прилетевшего кода.

Понажимав все свои три кнопки)) я пришёл к выводу о достаточности в моём частном случае ловли кода ‘0004 0004 00000004’, правда он случается и в нажатии и в отжатии, но это мы поймаем и учтём.

username11 пишет, что реальным кодом действия (нажатия, возни по тачу, еще какой датчик) служит первая строка, а остальные это «эхо системы» на первое действие — какие-то, как я понял, генерации уже «софтовые», дополнительных кодов для других системных ловушек. Что бы в другом нужном процессе тоже возникло срабатывание на действие. В добавок: по моей логике, коды-пачки нулей — это есть завершение «описания» кода. То есть, каждый ноль (‘0000 0000 00000000’) это конец логической «строки» event’а. В любом случае это лир.отступление, к делу его не пришьёшь, а коды ловить придётся))

Итак, я выбрал для ловли кнопки Громкость Вниз код всего лишь одной строки ‘0004 0004 00000004’, который уникален в пределах устройства pm8058-keypad (/dev/input/event1).
Дальше в дело вступает команда read в замесе с командой while, в таком виде:

формализованно: «ввод_данных | while read var1; do [наша построчная обработка] ; done»

разбор:
ввод_данных в данном случае это наш поставщик данных, «getevent /dev/input/event1»
вертикальная палка это перенаправление вывода консоли (то, что мы видим как появляющиеся строки после команды getevent) в другую команду на обработку дальше. (да, я пишу для таких валенков, как я)).
while read совокупность команд делающих следующее: while («пока») обеспечивает нам бесконечный цикл считывания строк «из-под» getevent’а, а read («читать») каждую строку вида ‘0004 0004 0000001c’ распихивает по переменным шелла, имена которых указаны после слова ‘read‘.
Например. Команда «ввод_данных | while read dev code» первое «слово» ДО РАЗДЕЛИТЕЛЯ (у нас это пробел) положит в переменную dev, а остальной хвостик (до конца строки) в переменную code. (Обращаться в шелле к значениям переменным мы потом будет $dev и $code). И равны они будут dev=’0004′, code=’0004 0000001c’. А если переменных будет скажем три: «ввод_данных | while read dev code1 code2», то наш пример, поданный на вход команды, она раскидает так: dev=’0004′, code1=’0004′, code2=’0000001c’. Правда здоровско?
Сам я пришёл к локальному выводу, что мне проще ловить ВСЮ строку (‘0004 0004 00000004’) в одну переменную, то есть у меня это ‘while read code’. И одну переменную $code уже сравнивать на нужное значение.

Всё, что идёт за знаком «точка с запятой» (semicolon, так сказать) после команды read, это есть команды обработки результата «распихивания» _каждой_ строки с кодами, прилетающей от getevent.

Локальный вывод: То есть, заказали мы прерывания от устройства event1, аппаратных кнопок, и всё, всё «висит» и бездействует. Система спит. Нажатие кнопки (любой) пробуждает систему (она отрабатывает сама) и присылает в getevent пачку строк с произошедшими событием. Мы раскидываем полученные строки с помощью while read на составляющие и уходим на дальнейшую обработку каждой строки отдельно, сравнивая, наша ли эта, искомая, строка, или нет. И потом запускаем боевую нагрузку, выполняем какое-то действие (включаем фонарик, как я, или вызываем сразу задачу таскера). (В принципе, вот всё решение). Но, об этом всём в своё время, ниже, а пока меня ждала целая серия засад:

Часть 2. Workarounds. Первое столкновение с практикой.

Сразу же после того, как я ринулся в бой, у меня ничего не заработало. Простая проверочная команда:
# getevent /dev/input/event1 | while read code; do echo $code; done
..ничего не показывала!
(смысл команды: получаем из getevent массив строк, с помощью while read переменная растаскиваем массив на строки и просто в каждом цикле командой echo выводим значение переменной (значок бакса перед именем), в данном случае всю строчку залпом, она в единственной переменной code).

Чудом я обнаружил, что показывает она результат, если понажимать кнопки много раз. Оказалось следующее. На «палке» идёт буферизация! То есть, перенаправление потока данных из-под getevent работает, конечно же, но система буферизирует данные — собирает их в кучку и отдаёт дальше только после накопления некоего объёма, видимо около 4к. И username11 даёт следующий совет: взять команду бизибокса script и обрамить ею вышеозначенную строку. Как я понял, script велит системе знать «устройство вывода» как (условно) tty, а не блочное устройство. И просовывать через «палку» каждый байт сразу, не дожидаясь накопления полного буфера.
То есть следующая проверочная команда замечательно заработала:
# script -q -c ‘getevent /dev/input/event1’ /dev/null | while read code1 code2 code3; do echo «code1:$code1, code2:$code2, code3:$code3»; done
(да, вывод команды script пришлось не забыть спустить в унитаз /dev/null)
(этот пример выводит при нажатии кнопок пачки строк вида: «code1:0004, code2:0004, code3:00000004» теперь не сутулясь и полной грудью, СРАЗУ после нажатия, ничего не откладывая в ящик).

Читайте также:  Мелбет для андроид последняя версия

Однако, настало время разбора результатов нажатий и отсев нужных, это для меня было совершенно свежо)) Вылилось это, после многодневного (неспешного) изучения инет манов-факов-хавтушек в следующее:
# script -q -c ‘getevent /dev/input/event1’ /dev/null | while read code1 code2 code3; do [ «$code1» = «0004» -a «$code2» = «0004» -a «$code3» = «00000004» ] && echo «code1:$code1, code2:$code2, code3:$code3» ; done
(строчечка уже «ого», да. Значит, что я делаю: рву каждую строчку на три части, code1-3, и затем сравниваю последовательно значение code1 с 0004, и так далее, и в итоге вывожу результат ТОЛЬКО на нужное мне нажатие (знак && говорит о том, команда echo выполнится только в случае выполнения всего сравнения в квадратных скобках)).
НЕ РАБОТАЕТ! ((
Я опять к начальству. (причём, как я потом выяснил в процессе перебирания разных вариантов, два первых сравнения работают! затык в третьем). Долго я мыкался, пока не был наставлен на команду познакового вывода данных:
# script -q -c ‘getevent /dev/input/event1’ /dev/null | od -cb
(она выводит значения байтов текста в разных форматах, ну, типа строчка 12345 будет выглядеть как 31 32 33 34 35). И сразу после было обнаружено, что в конце, за последним 00000004 кроме штатного линуксячьего знака переноса строки 0D, еще затесался (совершенно «ДОСовский») 0A. И конечно while read законно пихает его в последнюю переменную, в моём случае в code3. А сравнение-то у нас до знака, если в конце строки левый хвостик, то сравнение и не получается.
Начальник напредлагал мне (уже на грани моего понимания линуксовой ком.строки) вариантов этого очередного обхода, я остановился на вот таком:
тут первые проверки ] && echo «$code3» | grep -q ‘^00000004.$’ && echo «code1:$code1 (а в конце пошёл вывод через echo)
Заработало!
(как я понял, поиск строки через grep с ключом ‘-q’ даёт значение true/false в наш боян каскад двойных амперсендов && по сборке логики сравнения. Циркумфлекс и бакс с точкой остались уже ЗА пределами моего понимания, но верю, что это поиск от начала строки и опускание произвольного конца, того самого, что прилепился из знаков 0D и 0A).

Таким образом, полный поиск моей последовательности (напомню, ‘0004 0004 000000004’) БЕЗ боевой пока нагрузки, стал выглядеть так:
(code я опять, набаловавшись с дроблением строки на части, слепил в кучу, всё равно у меня пока один полностроковый код)
# script -q -c ‘getevent /dev/input/event1’ /dev/null | while read code; do echo «$code» | grep -q ‘^0004 0004 00000004.$’ && echo «code:$code»; done
(и выкинул квадратные скобки, всё равно основной результат даёт grep)
Вот, первый результат. В терминале выводится одна строчка на нажатие нужной мне кнопки, и одна на отжатие. На другие кнопки ничего не выводится. Можно привинчивать включение/выключение фонаря!

Часть 3. Фонарик. Долгая дорога в дюнах.

Ну, тут я прилично еще поплутал, Начальник подсказал, как проще сделать «переключалку» на командной строке, из 0 в 1 и обратно, _одной_ командой. (как я спросил: «как сделать xor ax,1» ))) Оказалось: а=$(expr 1 — $a).

Я заранее знал «переменную» включения фонаря, у меня (думаю, и на всех xperias так же) это /sys/class/leds/torch/brightness. Значение 0 не светит, 255 — светит. (и все промежуточные от 3 до 255 работают, но да про красиво-плавно включаемый фонарик и как я писал бинарь на си для андроида прямо на телефоне, это сказ отдельный)).
Еще мне нужно было найти, включен экран в данный момент или нет, потому что получая управление в точке echo code:$code я решительно (пока) не представлял, что с экраном. А если он включен, это штатное системное изменение громкости, и в ДАННЫЙ момент включать фонарик совершенно не обязательно.
Полазив, я нашёл. Рядом. /sys/class/leds/lcd-backlight/brightness тоже, 0-255, что ли. По крайней мере выключенный экран «0», включенный — НЕ ноль.

Ииии.. я запилил. Полный скрипт вы видели уже в начале. Ой, нет, это еще не всё)))

Часть 4. Последняя засада

В итоге username11 научил меня обрамлять всё скобками, за которыми писать одиночный амперсенд, &. Признак того, что скрипт должен остаься висеть в памяти системы, остаться резидентом. И отдать управление в командную строку. И тут была последняя засада — стоит напустить скрипт резидентом, он переставал работать! Так работает, а резидентом — нет! Как выяснилось после команды ps (список всех процессов), что мой скрипт в памяти-то висит, а хочет ввода-вывода, (я так ине нашёл, что за команда «хочет»), поэтому система его тормозит и ничего делать ему не даёт.
В итоге мне пришлось в конце для решения этой проблемы (еще один, последний, костыль)) написать:
# ( весь мой стрипт ) /dev/null 2>/dev/null &
(то есть всех охочих до общения спустить в унитаз).

Теперь всё заработало.

Повторим))
# (rep=0; script -q -c ‘getevent /dev/input/event1’ /dev/null | while read code; do torch=`cat /sys/class/leds/torch/brightness`; screen=`cat /sys/class/leds/lcd-backlight/brightness`; (echo «$code» | grep -q ‘^0004 0004 00000004.$’) && [ «$rep» = «0» ] && [ «$screen» = «0» ] && ( torch=$(expr 255 — $torch); echo «$torch» > /sys/class/leds/torch/brightness ); rep=$( expr 1 — $rep ); done ) /dev/null 2>/dev/null &
Что я делаю в скрипте:
— инит двоичной переключалки для ловли нажатия и отжатия
— после while read попадаем в основной разбор, что за строка прилетела
— читаю текущее значение фонаря
— читаю текущее значение экрана
— и дальше большое условие, сконкатенированное по && из условий:
— это наш код
— это нажатие (а не отжатие)
— экран выключен
— инверсия значения фонаря
и боевая нагрузка:
— запись нового значения фонаря (если был выключен — включает и наоборот)
— инверсия значения переключалки нажатия-отжатия.

Домашнее задание от username11 я так пока и не выполнил((, а оно вот:
1) выяснить, кто хочет ввода-вывода и устранить.
2) убрать лишние круглые скобки. каждые скобки, это лишний шелл запущенный каскадом.

Такскера тут вообще нет, как вы видите. Справившись с половиной этого дела, отсутствие таскера было уже делом принцпа)) зачем? когда всё «шелльно» и легко. А огромная дурильня-таскер испортит всю красоту. Да и для чего? Мигнуть фонариком?

Таскер по идее, как Начальник неоднократно писал, должен вызываться через am broadcast в «теле» боевой части.

Возможно, это не то, чего ждали массы)) но в любом случае, что-то почерпнуть полезное можно.
Любые советы, правки, возможные будущие _Приложения_ к этому сообщению, снятие костылинга, решения домашнего задания — решительно принимаются!

Сообщение отредактировал username11 — 23.02.20, 15:49

Источник

Оцените статью