LABA 120 - Mit App inventor 2 * Управляем андроидом с андроида по кислороду

Омск, начало 28-3-2018

Можно передать информацию и по воздуху или, как говорят на тюрьме,
по кислороду. Иногда можно услышать - а слышат все - например,
такое: "Один-четыре-три! Слышат эти крики не только на всей тюрьме,
но и на продолах. Могут ворваться нехорошие люди, устроить шмон дороги,
репрессии учинить. Поэтому долг человека на пике - у дверей - чутко слушать движение на
продоле и предупреждать тех, кто на дороге, например, словами "контора"
или "рояль". А вы говорите - закон яровой, он не для этого

Это при капитализме человек управляет человеком, а при социализме было наоборот




Управляем андроидом с андроида по кислороду
методом сжатия и расширения расстояния между молекулами газа
заполняющего пространства между андроид девайсами

На самом деле, путем генерации и измерения звуковых частот
или проще говоря свиста определенных тонов

Здесь только основные принципы, программа для тестирования
возможностей, ну и ее исходник естественно
http://aeha.narod.ru/appinv/oxigen/

Программа для тестирования на Yandex Store - Sound Line
Программа для тестирования на Yandex Store - Sound Line

Есть один чудесный - " App Inventor 2 Extensions" SoundAnalysis
для работы со звуком, может определять частоту звука по микрофону
работает стабильно от 200 до 800 герц

Частотомер из него не получится, Ибо меряет он не все частоты
а только особо любимые

Назначим им условные значения

00-380 01-390 02-400 03-410
04-421 05-432 06-444 07-457
08-470 09-484 10-500 11-666
12-695 13-727 14-761 15-800



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

Обзор исходника

и так что тут у нас

Это обработчик кнопки 0, всего их 16

генератор звуковой частоты андроид - http://aeha.narod.ru/appinv/oxigen/


событие Call.Player1.stop - останавливает плеер не важно играет он или нет
Set.Player1.Source="00-380.MP3" - присваивает плееру звук из соответствующего файла
событие Call.Player1.Start - пиликает этот звук

И так 16 разных тонов для разных кнопок

When Screen1.initialize

протоколы обмена данными - http://aeha.narod.ru/appinv/oxigen/

Этот обработчик события срабатывает при запуске программы на Andriod Device
на телефоне если кто не въехал здесь -

событие Call.SoundAnalysis1.StartListening - подключает компонент
на прослушивание микрофона
Set Clock1 - и так три раза , здесь не учавствут, можно не вставлять, приделал по привычке

Сам анализатор звука "App Inventor 2 Extensions" SoundAnalysis

управление частотой андроид - http://aeha.narod.ru/appinv/oxigen/

пишу много лишних слов для поисковика, так что не серчайте

Этот обработчик When SoundAnalysis1.GotPitch
срабатывает, когда понимает какой частоты звук он слышит
эту частоту он записывает в локальную переменную pitchResult
значение которой в свою очередь записывается в глобальную переменную
global col которая затем передается в текстовый Label на экран телефона

"Set l_inp.Text" через блок "Format as decimal number" предназначенный здесь
для форматирования числа в красивый вид, но .. чёто не заметил красоты

далее блок IF сравнивает глобальную переменную "global col" с не
менее глобальной переменной "global POV" на предмет неравенства, сразу хочу признаться
все названия переменных вымышленные, и совпадения с реальными именами случайны.

зачем вообще это блок IF ?
дело в том что компонент "App Inventor 2 Extensions" SoundAnalysis
работает весьма шустро, и успеет кучу раз замерить частоту сигнала
и передать это на экран, Оно нам надо?

стало быть после первого измерения, значения "global col" и "global POV"
сравняются, и этот блок будет игнорироваться , до смены частоты

Не практично, но ведь тут только рассказ о принципах
По концовке этих логических цепочек
Методом "Call color"
Мы переносимся в процедуру, как ни странно, под название "color"
о выборе имен было выше


Процедура Color

звук андроид - http://aeha.narod.ru/appinv/oxigen/

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

в самом ее начале вызывается процедура "Call gas" измеритель звуковой частоты +в герцах +на андроид - http://aeha.narod.ru/appinv/oxigen/
которая красит все 16 меток лабел в серый цвет

Set LF.BackGroundColor- Set LF.BackGroundColor

глобальной переменной "global c" - правда изящные имена?
присваивается пустая строка.
далее блок IF проверяет "global col" и если значение укладывается
в нужный диапазон то есть в данном месте, больше 375 и меньше 385
метка "LF.BackGroundColor" окрашивается в красный цвет
что мы и видим на экране сотового.
глобальной переменной "global c" в данном случае присваивается значение 0 или "0"

в "Mit App Ainventor 2" тип переменной значения не имеет

проверив таким образом частоту сигнал 16 раз, программа решает какую цифру она получила

в метку "l_key.Text" выводится "код последней клавиши"
а в метку "L_STR.Text" блоком "Join" собирается строка из нажатых клавиш
которую можно будет использовать для организации какого либо протокола обмена

Ну и в конце процедуры, "global col" ставится в ноль, сейчас вижу конструкция ненужная
да ладно

Кнопка CLR

программа +для связи +с телефоном андроид - http://aeha.narod.ru/appinv/oxigen/
Кнопка предназначена для очистки "L_STR.Text"
путем присваивания ей пустой строки

Кнопка EXIT

связь +с телефоном андроид - http://aeha.narod.ru/appinv/oxigen/

для выхода из программы,
Событие "Call SoundAnalysis1.StopListenig"
останавливает прослушивание микрофона

А блок "close application" завершает программу

Тут видимо нужны пояснения
Телефоны разные и ведут себя по разному, тот что использовался в данном проекте
и вы возможно видели на видео, называется Alcatel 4034D
Так вот на нем погасание экрана не гарантирует ухода в полную спячку

Замечено что он нагревается, а батарея разражается.
что свидетельствует о тайной, бурной жизни девайса.
И как следствие, появилась привычка,
ставить кнопку "Exit" на программы

Как обычно тут можно скачать


Исходник проекта - Для App Inventor 2
Скомпилированный APK - кому влом парится с исходником
И программу генератор звука для ПК


SOCIAL

Вопросы можно задать

Группа Вконтакте