sc16

sc16

Пикабушник
поставил 76 плюсов и 20 минусов
Награды:
5 лет на Пикабу
242 рейтинг 8 подписчиков 7 подписок 4 поста 1 в горячем

Добавляем пылесосу одометр

Всем привет. У меня накопилось несколько интересных решений для умного дома, которыми я хочу поделиться. Понятия не имею куда писать подобные статьи. Для хабра слишком просто, для телеграм чата по HomeAssistant - прочитают два с половиной человека, пост утонет в потоке. Поэтому сюда!

Добавляем пылесосу одометр Электроника, Гаджеты, Изобретения, Длиннопост



И так одометр пылесоса. Зачем он нужен?
Первоначально один мой знакомый попросил помочь ему с автоматизацией - уведомление когда заканчивается вода в пылесосе. Но как сделать подобное если пылесос никак не отслеживает уровень воды? Но каждый же может примерно оценить на сколько ему хватает бака?
У меня и моего товарища пылесос Xiaomi, а точнее его очередной дочки - Xiaomi Mijia Robot Vacuum Mop P STYJ02YM. На самом деле для дальнейшего повествования это не суть важно. Я хочу описать принцип работы, а полученные знания можно применить к кучу других пылесосов.

И так у меня есть устройство пылесос. У устройства есть атрибуты:

Добавляем пылесосу одометр Электроника, Гаджеты, Изобретения, Длиннопост

Нас будет интересовать два из них - box_type и cleaned_area. Из cleaned_area мы создадим одометр, а с помощью изменения box_type будем его сбрасывать.
И так начнем с одометра. Создадим виртуальный сенсор пробега:

template:
sensor:
- name: home_vacuum_box_type
icon: mdi:boombox
state: >
{{ state_attr('vacuum.home_vacuum', 'box_type') }}

- name: home_vacuum_cleaned_area_now
icon: mdi:counter
state: >
{{ state_attr('vacuum.home_vacuum', 'cleaned_area') }}
unit_of_measurement: 'm²'

Где home_vacuum_box_type - название виртуального сенсора, а {{ state_attr('vacuum.home_vacuum', 'box_type') }} - его показание, которое будем брать из атрибута box_type у устройства vacuum.home_vacuum.

Таким образом мы создаем два сенсора:
sensor.home_vacuum_box_type - показывающий текущий тип контейнера
sensor.home_vacuum_cleaned_area_now - показывающий текущий пробег


Теперь создадим сам одометр:

utility_meter:
home_vacuum:
source: sensor.home_vacuum_cleaned_area_now
name: home_vacuum_cleaned_area

Так как показания sensor.home_vacuum_cleaned_area_now будут отображаться как - сколько убрано площади в данный момент - то есть 2 метра, через минуту 5 метров и.т.д. Нам надо использовать utility_meter. Он не будет складывать 2+5, а считать правильно. Так же будет учитывать что показания могут откатываться на 0 при постановке на док станцию и тогда к текущем 5 метрам полученными с прошлой уборки, будут прибавляться новые показания с текущей уборки. Короче говоря мы получим sensor.home_vacuum_cleaned_area который уже будет работать как настоящий одометр.

Далее нам надо как то сбрасывать одометр при вытряхивании/замене контейнера. Именно для этого мы будем использовать sensor.home_vacuum_box_type. В моем пылесосе sensor.home_vacuum_box_type '1' - контейнер для пыли, sensor.home_vacuum_box_type '3' - контейнер для воды и sensor.home_vacuum_box_type '0' - контейнер отсутвует.
Именно 0 то нас и интересует. Создадим простейшую автоматизацию:

- alias: Дом - Пылесос - Сброс счетчика уборки при замене контейнера
id: home_vacuum_automation_clean_count_reset
mode: single
trigger:
- platform: state
entity_id:
- sensor.home_vacuum_box_type
to: "0"
action:
- service: utility_meter.calibrate
data:
value: "0"
target:
entity_id: sensor.home_vacuum_cleaned_area

Где триггером будет выступать состояние 0 у sensor.home_vacuum_box_type. Это значит что контейнер я вынул - значит одометр нужно сбросить.

Таким нехитрым образом мы добавили к пылесосу одометр который сбрасывается при замене/очистке контейнера. Остается лишь дописать автоматизации вроде - если тип контейнера 3, а одометр больше 60 метров, тогда отправить сообщение на Алису/телеграм/куда вам удобно - вода заканчивается.

Показать полностью 2

Автоматизируем ваш Android

Сегодня я хочу рассказать вам про автоматизацию на Android. Меня удивляет, но в 2018 люди не знают что многое в вашем телефоне на Android можно автоматизировать и жизнь станет чуточку проще) Например приходя на работу вам надо отключить звонок, оставив только вибрацию. Вы хотели бы чтобы при открытии приложения карты, звук из динамика ставился бы на максимальную громкость. Чтобы рекламные смс сразу отмечались прочитанными и удалялись. Чтобы в некоторых приложениях работал автоповорот, а в некоторых нет.


На самом деле практически нет никаких ограничений в сценариях автоматизации, все ограничивается лишь вашей фантазией.


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


Самое сложное в Tasker это начать. Дизайн у приложения практически отсутствует, оно кажется страшным и непонятным. Для начала включим русский язык. Я знаю что опытные "таскеры" используют приложение на английском, но цель данной статьи максимально просто объяснить как пользоваться приложением. И так открываете Tasker, нажимаете на значек меню (три точки в верхнем правом углу) - Settings - Interface - Localization - Russian

Теперь когда приложение на русском нужно отключить Beginner Mode, все там же (Настройки - Интерфейс и на самом верху). Begginer Mode скрывает некоторые опции при создании сценариев, поэтому выключаем его, нам нужны все возможности программы.


Tasker имеет обыкновение показывать что он работает, выводя свое уведомление в шторку. Я не люблю когда шторка завалена хламом, а именно очевидными для меня вещами. Вообще уведомление это как бы нужно, чтобы система не выгружала Tasker из памяти и он постоянно работал. Кстати должен сразу сказать что можно не беспокоится за батарейку. Я пользуюсь Tasker много лет и не могу сказать что он хоть как то влиет на энергопотребление телефона. Понятно что могут быть сценарии не позволяющие например телефону переходить в глубокий сон (такой режим энергосбережения), но эти сценарии вы пишите сами, и тут ответственность только на вас. Сам по себе Tasker батарейку не жрет.

Я рекомендую убрать уведомление из шторки самым демократичным образом. Открываете шторку, удерживаете палец на уведомлении от Tasker пока не значек запретить все уведомления. Ну либо зайти в Общие настройки телефона - приложения - Tasker - Уведомления - Отключить все. По итогу вы получите что уведомление как бы есть, но его не видно. У меня таким образом еще например скрыта программа ACR для записи телефонных разговоров. Ей так же требуется постоянный вывод уведомления, а я его таким образом прячу.


И так переходим к созданию первого вашего сценария. Например сделаем включать функцию Автоповорот при запуске Галереи, при выходе из приложения соответсвенно отключать обратно.

На начальном экране Tasker вы видите 4 вкладки. Сегодня нас будут интересовать только две из них. Profiles и Tasks. Profiles это скажем так события. Нажимаем внизу плюсик и создаем профиль. Напоминаю, сейчас мы делаем автоповорот. В голове обдумываем что за событие может быть? Открыто приложение Галерея. Нажимаем: + Приложение, открывается список всех ваших приложений, находим и выбираем галерею. Нажимаем назад. Теперь появляется меню Новая задача +. Жмем на нее и называем ее. Пишем просто Автоповорот и нажимаем галочку. Теперь вы на экране изменение задачи. Жмем снова плюс и находим поворот экрана, можно даже просто поиском вбить слово поворот. Выбираем пункт и появляется новый экран - Установка. Ставим включить и нажимаем назад. Поздравляю, вы создали свой первый сценарий. Теперь при запуске приложения Галерея будет включатся автоповорот, а при закрытии или сворачивании выключатся.


Покажу сразу небольшие нюансы на вашем свеже-созданном профиле. Переходите на вкладку Profiles, задерживаете палец на вашем созданном профиле и нажимаете шестеренку вверху. Вы попадаете в Свойства профиля. Тут есть несколько параметров о котором вас стоит сразу знать. Первый это Restore Setting. Этот параметр включен по умолчанию и отвечает за то что при выходе из приложения галарея, автоповорот выключался обратно. Правильнее даже будет сказать, настройки автоповорота принимали прежнее значение. Если вам нужен сценарий когда действие не нужно отменять, снимите эту галочку. В данном случае если галочку снять, автоповорот останется включенным даже после закрытия Галереи.

Вторая настройка это Enforce Task Order. Это так сказать принудительное выполнение задачи. Оно абсолютно не нужно, ни на что не влияет, но говорят может жрать батарейку. Лично на себе я подобного эффекта не ощущал, но мало ли...


Важно отметить еще такое понятие как выходная задача. Например при запуске какого либо приложения нужно включить автоповорот, а при выключении удалить какую то папку. То есть по сути у вас к одному профилю привязывается две задачи, одну из которых надо выполнить при запуске, а другую при закрытии. Для этого перейдите на вкладку Profiles, коротко нажмите на нужный вам профиль, нажмите долго на зеленую стрелочку, выбирите Add Exit Task и добавьте нужную вам задачу.


У меня еще реализованы еще несколько сценариев, попробуйте повторить их самостоятельно.

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

2. При включении эмулятора PPSSPP, включить Immersive Mode (Hide Navigation Bar) - убираю кнопки в игре в которой они автоматически не убираются


У Tasker очень много возможностей. Есть целая куча готовых сценариев, сохраненных в файлы сценариев, которые достаточно лишь импортировать в программу. Я лишь познакомил вас с программой, ну а все ее возможности советую уже изучать самостоятельно.


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

Показать полностью

Как устроена память в Android

Как устроена память в Android? В этой статье я хочу разрушить несколько мифов, а так же объяснить почему на самом деле удаляя системное приложение вы не получаете больше свободной памяти.


Начну издалека. Смотрите, вы скорее всего привыкли пользоваться Windows и уже имеете понимание как устроены диски и разделы в вашем компьютере. Не знаю как сейчас, а еще лет 10 назад было очень модно при установке Windows делать 2 диска - "C" и "D". На "С" обычно ставили систему, а "D" хранили важные файлы, типа музыки, фоток, документов. Делали это, если кто забыл, для того чтобы через пол-года - год, спокойно отформатировать диск "С" и поставить винду заново. Раньше не у всех были антивирусы, да и софт был зачастую такого себе качества... Впрочем ушли от темы. Так вот физически диск как правило в компьютере был один, а при включении ПК видели "C" и "D". Как это? Наверное тут виноваты локализаторы Windows (но это не точно), правильно было бы называть "C" и "D" не дисками, а разделами.


Так вот разделов на диске может быть сколько угодно, и Android этим активно пользуется. Внутренняя память у вашего телефона одна, то есть один диск (чип), а нем куча разделов. Я сейчас не буду описывать все, в среднем их обычно 15 плюс-минус от производителя к производителю, опишу лишь основные.


Самый главный раздел это Bootloader. В этом разделе содержится загрузчик вашего телефона. Наиболее всего это похоже на Bios как в вашем ПК. Железо в первую очередь грузит загрузчик, а что делать дальше оно не знает, и тут уже загрузчик объясняет железу что далее надо грузить ядро - систему и.т.д. Знатоки конечно могут бросить сейчас в меня тапком, но такого объяснения вполне достаточно на мой взгляд для общего понимая.


Следующий раздел это ядро. Затем раздел System, это прошивка, затем раздел Data это уже доступная вам память в которой ваши загруженные приложения, фоточки и.т.п.

Как устроена память в Android Android, Длиннопост, Текст, Как это сделано

Я нарисовал некий воображаемый чип памяти вашего телефона. Скажем объемом 16гб. Скажем Bootloader занимает 100мб, еще 100мб занимает ядро (все размеры вымышленные, но близки к оригиналу). Прошивка (System) занимает скажем 3гб. Ну а все что осталось остается под Data.

Раздел Data делится на две основные части. Первая это ваши скаченные приложения и их данные. Например приложение Пикабу + данные + его кэш. Все это хранится в папке data на разделе Data (масло масленное, но что делать), остальное, ваши фотки, музыка, документы и.т.д. хранится в папке sdcard опять же на разделе Data. У вас есть почти полный доступ в разделу Data. Почему почти, как нибудь в другой раз расскажу) Представьте что вы решили удалить приложение Пикабу, т.к. оно находится в разделе Data который вы же используете под свои файлы, вы сразу увидите немного освободившегося места. А вот скажем если вы удалите установленный в прошивку Яндекс поиск с помощью root прав, памяти больше не становится. Почему так? Потому что все системные приложения называются системными от того что установлены они в систему. То есть в раздел System. От того что вы что либо удаляете из System, памяти в Data не прибавляется. Ну представьте как вы удаляете просмотренный фильм с диска "D", памяти на диске "C" же не прибавляется?


Вы наверное надеетесь что освобожденное место в System передается как то разделу Data, но это не так. Более того, я вам скажу, что вашей прошивке не нужно столько места сколько есть в System. Чтоб было понятнее - например ваш раздел System это 3гб от общей памяти. 3гб! Этот размер определил производитель. Как правило на этом 3-х гб "диске" лежит 2-х гб прошивка, а один оставшийся гб сделан просто на всякий случай! Это делает производитель на будущее. Вдруг он решит в следующей версии прошивки сделать прошивку не 2гб, а 2.3гб! Ну вот решит функцию какую нибудь добавить например. Вот для этого и сделан этот лишний гб. А теперь подумайте, кому станет легче, от того что вы удалить из раздела System пару приложений? Там и там был лишний 1 гб, а станет 1.1гб. При этом Android так устроен, что ему вообще ничего не нужно писать в System, он от туда только читает. Размер раздела Data тоже задает производитель, как правило это то что осталось после всех остальных разделов. Ну то есть производитель увидел что после записи всех разделов осталось например 11гб, вот значит эти 11 и разметить под раздел Data. Короче говоря размер опять же фиксированый.


Можно ли переразметить разделы? Сделать скажем 2гб под System, оставшееся место отдать Data?

Чисто в теории можно, но практически этим почти никто не занимался. Мне попадались некоторые аппараты под которые были написаны скрипты переразметки, но это единицы аппаратов. Например у Samsung переразметка осуществляется Pit файлами, есть даже редактор этих файлов, но например мой Samsung Demo Unit Note 3 кушать такой измененный pit отказался. Я видел скрипт для Galaxy Nexus через parted, но опять же возможности протестировать не было. Короче, переразметка это очень не популярное явление, да и опасное, чего уж там. В вашем компьютере Bios на отдельном чипе, и обычный пользователь вряд ли будет с ним хоть как то взаимодействовать, а значит не убьет. В Android же bootloader находится на том же чипе что и основная память, а значит шанс случайно грохнуть раздел bootloader при манипуляциях с переразметкой памяти очень большой. С грохнутым bootloader вы не сможете прошить телефон, железо просто не будет знать что делать при включении. Вот вообще знать не будет! Такой телефон придется прошивать на специальном оборудовании и самое главное далеко не каждого мастера оно есть. Конечно из этой ситуации бывают исключения, но сути это не меняет. В 90% случаев понадобиться специальное оборудование.


В заключение хочу сказать что если вы думаете, что удалив софт из System вашему телефону станет "легче дышать", то это снова не так, но об этом уже в следующий раз).

Показать полностью 1

Как перестать бояться и полюбить adb

В последнее время все больше людей отказывается от получения root прав. У всех на это свои причины. Кто-то не хочет заморачиваться и читать сложные мануалы, кто-то боится потерять гарантию. Google тоже способствует этому, разрешая в новых версиях Android, хоть и не просто, но все же выполнять некоторые действия, которые без root были раньше невозможны. Речь сегодня пойдет о тонкой настройке через adb. Преимущественно статья написана для людей не имеющих root права на телефоне, для тех у кого все же root права есть - статья предоставляется как есть. Автор статьи не несет ответственности за ваши действия.


Для начала запомним что ни одно действие описанное в этой статье не может окирпичить ваш телефон. Вы не имеете root прав, а значит невозможно испортить какой-либо компонент системы. Это не касается ваших личных файлов и приложение, речь только о компонентах системы, о прошивке короче говоря. Так же данные действия никоим образом не могут повлиять на гарантию вашего телефона, собственно по тем же причинам. Без root мы просто не затрагиваем системные компоненты. Используем только то что разрешает нам сама система, как пользователю.


Разберем немного само устройство системы. В Android нет дисков как в Windows. Есть папки. Папки могут быть например картой памяти. Представьте что на вашем компьютере при вставке флешки, на рабочем столе появляется папка "флешка". Вытаскиваете, исчезает. Вот примерно так же и устроена система в вашем телефоне. И так попадая в shell вашего телефона вы оказываетесь в корневой, главной папке. В ней находится куча папок куда у вас нет доступа. Например System (папка прошивки) или Data (папка данных приложений). То есть доступ в эти папки у вас как бы есть, но только на чтение. Вы не можете изменять, удалять или добавлять туда свои файлы. Нет root доступа для этого. Нас интересует внутренняя память телефона + карта памяти, куда запись нам вполне доступна. И так, внутренняя память телефона всегда называется /sdcard. Карта памяти может находится в другом месте, но обычно она /storage/0123-4567


Для того чтобы попасть в shell вашего телефона (командную строку), нужно произвести на телефоне не сложные действия. Заходите в настройки телефона, ищете пункт "О Телефоне". В нем ищите информацию о прошивке, версию и .т.д. Нас интересует пункт "Номер сборки". Нужно нажать на него быстро 10 раз. Должна появиться надпись "Включен режим разработчика". Не бойтесь, ничего страшного не произойдет, просто в настройках телефона появится новое меню "Параметры разработчика". Нужно зайти в это меню и включить "Отладка по USB".

Далее на компьютер нужно установить adb. Для этого вам необходимо скачать "15 seconds adb installer". К сожалению прямых ссылок дать не могу, но уверен поиском в гугле вы найдете нужный файл.

Запустить от администратора, несколько раз согласится нажав на клавиатуре "Y", установить драйверы от Google Inc.

После того как вы установили adb + необходимые драйверы, вы можете работать с командной строкой телефона.

Для этого в пуске нажмите выполнить и вбейте руками CMD. Ну или на любом месте рабочего стола нажмите на клавиатуре "Win + R", вбейте "cmd" (без кавычек) нажмите Enter.

Вы в командной строке компьютера. Чтобы подключиться к командной строке телефона вбейте adb shell. На телефоне может появится диалог - "доверять ли этому компьютеру?" Жмите доверять. Если все прошло гладко, вы увидите что-то вроде 1|greatlte:/ $


Основные команды:

pwd - показывает место (полный путь) к папке где вы находитесь

cd .. - перейти в папку уровнем выше

cd - change directory (сменить папку)

mkdir - make directory (создать папку)

rmdir - remove directory (удалить папку)

rm - remove file (удалить файл)

rm -rf - remove recursive force (удалить папку/файл вместе со всем содержимым) (Это опасная команда! Если запустить ее находясь скажем в корне памяти телефоне, вы сотрете все файлы (фотки например) находящиеся на карте памяти. Лучше не пользоваться этой командой без полного понимания того что она делает).

cp - copy (копировать)

mv - move (перемещать или переименовывать)


Примеры:

cd /sdcard/Downdload - сменить папку на /sdcard/Downdload

mkdir Papka - создает папку Papka в папке где вы находитесь

mkdir /sdcard/Downdload/Papka - создает папку Papka в /sdcard/Downdload

copy bxActions.apk bxActions1.apk - создает копию bxActions.apk с именем bxActions1.apk в папке где вы находитесь

mv bxActions.apk bxActions1.apk - переименовывает файл bxActions.apk в bxActions1.apk в папке где вы находитесь

mv /sdcard/Downdload/bxActions.apk /sdcard/bxActions.apk - переносит файл bxActions.apk из папки /sdcard/Downdload/ в корень внутренней памяти (/sdcard)


Почувствуйте себя хакером, начните использовать кнопку Tab на клавиатуре. Например пишите cd /sd[жмете кнопку TAB] получается - cd /sdcard

Продолжайте - cd /sdcard/Dow[жмете кнопку TAB] - получаете cd /sdcard/Downdload/ и вот уже можно жать Enter. Получается быстрее, если привыкните, жизнь станет сильно проще)

Кнопка Tab в командной строке пытается продолжить то что вы пишите подставляя имена файлов и папок которые есть в системе.


Что может adb? Начнем с азов. Перезагрузка в основные режимы.

reboot - (перезагрузка телефона)

reboot bootloader - перезагрузка в режим download или режим bootloader

reboot recovery - перезагрузка в режим восстановления


Работа с показом всяких системных характеристик:

getprop ro.bootloader - показ версии bootloader (только Samsung)

getprop ro.boot.carrierid - показ региона телефона (только Samsung)

getprop - выводит полный список команд сразу с результатами, можно посмотреть кучу инфы о телефоне


Страшный ужасный push и pull:

Эти две команды, push и pull скачивают и закачивают на телефон файлы с ПК и обратно.

Например. Открываете свой cmd на компьютере. Там вы тоже оказываетесь сразу в какой-то папке. Обычно это какой-нибудь C:\Windows\System32. Допустим вам нужно скачать файл с рабочего стола на телефон. В командной строке ПК пишите - cd C:\Users\Vasya\Desktop

Vasya - название пользователя, у вас оно само собой другое) Используйте кнопку TAB как писал выше, будет быстрее и проще. Задача чтобы вместо C:\Windows\System32 у вас было написано C:\Users\Vasya\Desktop

Как только вы оказались командной строкой на своем рабочем столе, можно например отправить файл контактов на телефон:

Пишите:

adb push контакты.csv /sdcard/Download/

И файл контактов скопируется с вашего рабочего стола в телефон, в папку /sdcard/Download/

С помощью команды pull можно наоборот, скачать с телефона на ПК:

adb pull /sdcard/Download/контакты.csv контакты.csv

Файл должен оказаться в той папке где вы находитесь командной строкой на ПК (но мы же на вашем рабочем столе, верно?)


Даем какой-либо программе специальные разрешения на примере bxAction:

Для работы bxActions нужно два специальных разрешения, WRITE_SECURE_SETTINGS и READ_LOGS. Эти разрешения могут быть даны только через компьютер, через adb. Сам разработчик рекомендует ввести в командной строке следующее:

adb shell pm grant com.jamworks.bxactions android.permission.WRITE_SECURE_SETTINGS

adb shell pm grant com.jamworks.bxactions android.permission.READ_LOGS

Это правильные команды, однако они не дают вам понимания сработали ли они при вводе. Я рекомендую вводить так:

adb shell - тут мы заходим в shell телефона

pm grant com.jamworks.bxactions android.permission.WRITE_SECURE_SETTINGS

pm grant com.jamworks.bxactions android.permission.READ_LOGS

Если при вводе возникнут какие-либо ошибки, вы это увидите. Если все хорошо, вывод будет пустой.

Таким вот не очень хитрым образом вы можете выдавать приложениям права которые раньше могли быть доступны только с получением root! К сожалению Google разрешает таким образом выдавать не все права, тот же Titanuim Backup не заработает, однако многие другие приложения сейчас умееют работать довольствуюсь только доступными в adb правами.

Я перечислю несколько приложений который попросили специальные права, я выдал их через adb и приложения прекрасно работают. Это - Wakelock Detector, Tasker, Adhell, Andromeda, AutoNotification, bxAction, Substratum, SystemUI Tuner.


Страшный ужасный менеджер пакетов.

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

У каждого приложения есть уникальное имя пакета. Это скажем так внутреннее название приложения, такое как его видит система. Вы же видите только название из так называемых строк перевода. Даже если приложение не переведено ни на какие другие языки кроме родного языка разработчика или просто английского, в любом случае у приложения будет так называемый default перевод в котором будет прописано название приложения. Таким образом вы видите у себя в меню приложений bxActions вместо com.jamworks.bxactions

Бывают конечно пакеты которые являются скажем какими то системными дополнениями, которые не переводят даже в файле default перевода и оставляют прям называнием пакета. Кстати по этой же логике создаются приложения клоны. Достаточно пересобрать (именно пересобрать через специальный софт) пакет com.jamworks.bxactions с именем com.jamworks.bxactions1 и при установке вы получите второе приложения bxActions) Такой клон не всегда будет работать, но это один из способов создать клон. Система видит приложения с разными названиями пакетов как отдельные приложения.

И так что может pm?

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

adb shell

cmd package list packages


Удалить пакет (например bxactions)

pm uninstall com.jamworks.bxactions


Пакетным менеджером так же можно устанавливать приложения. Например вы скинули bxActions.apk в папку Download

adb shell

cd /sdcard/Download

pm install bxActions.apk

Поздравляю вы установили приложение не дотрагиваясь до телефона)


Пакетный менеджер так же умеет отключать приложения. Например встроенный браузер вам не нравится, вы используете Chrome самостоятельно установленный с маркета. По привычке вы заходите на телефоне в настройки, выбираете пункт приложения, находите встроенный браузер, но пункта отключить нету, есть только остановить. Тут то и пригодится пакетный менеджер. Конечно, вы скажете, что можно поставить какой-нибудь Disabler с маркета, но это не всегда бывает удобно, поэтому просто знайте что есть способ сделать это через adb.

pm disable com.jamworks.bxactions - чтобы отключить

pm enable com.jamworks.bxactions - чтобы включить обратно если вы передумали

Есть одна загвоздка, вы можете не знать какое название пакета приложения Браузер. Обычно в если зайти в свойства приложения через настройки (Настройки - Приложения - bxActions), то в какой нибудь строке указывается название пакета, однако на Samsung'ах например невсегда. В случае если посмотреть название пакета негде, а искать в выводе cmd package list packages не хочется, можно воспользоваться сторонним софтом. Например проводник которым я постоянно пользуюсь это умеет. В Solid Explorer открываем боковое меню, приложения, выбираем системное или пользовательское приложение, видим список приложений и под каждым написано название пакета.

Показать полностью
Отличная работа, все прочитано!