PickerMetod, ще один варіант розширення для App Inventor [безкоштовно].

Автор: Oto. Опубліковано в Різне

ai2 appinventorПри створенні мобільного додатку в App Inventor , додаток  який повинен передавати дані у МК, та співпрацювати з цим мікроконтролером.

Потрібні різні методи , з допомогою яких це можна зробити зручніше.

Взагалі App Inventorв своєму розпорядженні має багато засобів якими можливо вирішити будь які завдання, методи цих рішень можуть бути як складними, так и надзвичайно простими.

 

Тому ось мій варіант кількох розширень, здається мені, що вони повинні бути доволі зручні, це начебто для праці з  arduino не вистачає саме таких розширень які зроблені мною на свій розсуд.

Представляю до вашої уваги кілька таких методів розширень, яких немає в стандартному компоненті сповіщення для App Inventor.

Сподіваюся, це вам сподобається та заощадить ваш час!

📦 Назва пакета: sxem.org.pickermetod; та  sxem.org.metodnotifier;

🕘Версія: MetodNotifier.java.txt

📅 Дата виходу: 24 березня 2023 

👍Велика подяка:

@ТІМАІ2, за його розширення ⚠️AltNotifier(чудова підтримка!!), 

@Gordon_Lu, за його розширення ⚠️ DaffyDialog[безкоштовне та з відкритим кодом] вони надихнули мене, на створення цих блоків.

Розширення .aix зібрано: за допомогою Rush Extension Builder, від @Shreyash

📖 Блоки подій, опис:

1) “InfoChoiceDialog” 

InfoChoiceDialog

цей компонент дуже схожий на стандартний компонент “ShowChooseDialog, він також показує діалогове вікно запитань, які встановлені моб. додатком, і дозволяє  позитивні варіанти відповідей або скасування від користувача (відмінність від “ShowChooseDialog, нам всі три кнопки користувач може зробити свій напис, а також блок має свій флаг “identify.) .

Викликаються відповідні події від трьох кнопок "Left,"Right","Cancel"

Подія після вибору кнопки "Left,"Right", яка повертає флаг-“identifyта  текст кнопки, в блок “InfoChoiceInput.

Якщо вибір "Cancel", флаг-“identifyвідповіді  повертається, в блок “InfoChoiceCanceled.

 

2) “DoubleWindowDialog

DoubleWindowDialog

 Показує подвійне діалогове вікно, де користувач може ввести свої текстові назви.

Відповідності: identify = число(int), message = текст, title = текст, hintUp = текст, hintDown = текст, textUp = текст, textDown = текст, cancelable = boolean 

Після запуску та відображення діалогового вікна, коли текстове поле отримає фокус, одразу виникне програмна клавіатура.

 

Подія після вибору кнопки "ОК, відповідь  повертає число “identifyта  текст “textUp ,textDown, в блок “DoubleWindowInput.

Якщо вибір "Cancel", флаг-“identifyвідповіді  повертається, в блок “DoubleWindowCanceled

 

3) “TxtDigitShowDialog” 

TxtDigitShowDialog

Діалогове вікно для праці з цифрами та текстом. У цього діалогового вікна,  на введення цифр та тексту цікаві розмаїття .

Параметр identify- це ідентифікатор для визначення сповіщувача, коли ви хочете показати два діалогові вікна з однаковим розширенням. Параметр “titleпризначений для визначення заголовка цього діалогового вікна. “textDefault- текст за замовчуванням для введення, який користувач спочатку побачить у текстовому полі, коли відкриває діалогове вікно, а підказка підказка цього текстового поля, це“hintText.

Відповідності: identify = число(int), message = текст, title = текст, textDefault = текст, hintText = текст, hintColor = колір, inputColor = колір, buttonText = текст, cancelButtonText = текст, cancelable = boolean , logic = число(int)

logic” = 0 Немає типу вмісту. Текст не редагується

"logic” = 1 звичайн. текст.

"logic” = 2 тільки цифри.

"logic" = 3 номер телефону.

"logic” = 4 дата/час.   

"logic” = 12 Числове поле пароля

"logic" = 21 адреси електронної пошти.

"logic” = 24 введення часу.

"logic" = 81 текстове поле пароля.

 

Подія після вибору кнопки "buttonText, відповідь  повертає число “identifyта текст  “hintText-response, в блок “TxtDigitShowInput.

Якщо вибір "Cancel",“identifyвідповіді  повертається, в блок “TxtDigitShowCanceled

 

4)  “NumberPickerDual” 

 NumberPickerDual

Подвійне діалогове вікно вибору чисел, яке дає змогу користувачеві вибрати числа з попередньо визначеним діапазоном.

Відповідності: identify = число(int), message = текст, title = текст, buttonText = текст, defaultValue0 = число(int), minValue0 = число(int), maxValue0 = число(int),

           defaultValue1 = число(int), minValue1 = число(int), maxValue1 = число(int), logic = число(int)

"logic"<=1 перше та друге число без форматування

"logic">=2 перше число - без форматування, друге число - додаємо незначущі нулі після коми, до двох зн.(0.00) та (0.000)3х значного числа.

 

Подія після вибору кнопки "buttonText, відповідь  повертає числа “identifyта  “number0,number1, в блок “DualPickerInput.

До “finalDataповерне текстове значення, у вигляді “0.00” чи “0.000” 

Якщо вибір "Cancel",“identifyвідповіді  повертається, в блок “DualPickerCanceled

 

5)  “NumberPickerTimer

NumberPickerTimer

 Відображення одного діалог вікна для встановлення часу таймера, наприклад: щоб  таймером щось увімкнути та вимкнути в призначений час, відповідно кінцевий вигляд значення може бути такий   “12:55  23:01” . Всі дії робляться в одному вікні, це зручно.

Відповідності: identify = число(int), message = текст, title = текст, buttonText = текст, defaultValue0 = число(int), defaultValue1 = число(int), defaultValue2 = число(int), defaultValue3 = число(int)

 

Подія після вибору кнопки "buttonText, відповідь  повертає “identifyта числа “number0,number1,number2,number3, в блок “TimerPickerInput.

До “finalDataповерне текстове значення, у вигляді “12:55  23:01” 

Якщо вибір "Cancel",відповідь  “identifyповертається, в блок “TimerPickerCanceled

 

6) “NumPickTherm” 

NumPickTherm

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

Чому специфічний? тому що кожен може працювати з даними температури як йому заманеться.

Мені до вподоби коли температура цифр у вигляді, 1000 це 0°c , 1253 це +25.3, 847 це -15.3°c, якщо Ви сприймаєте таку математику температури, то цей блок вам також сподобається.

Відповідності: identify = число(int), message = текст, title = текст, buttonText = текст, horizon = boolean, maxUpw = число(int), minDown = число(int), defaultThermo = число(int)

       "defaultThermo= встановимо початкове значення , треба щоб були  в форматі "1253" чи "747"

       "maxUpwверхня температура . Встановлювати до плюс температури "123" з "1" попереду (позитивна°)

       "minDownнижня температура. Якщо треба порог негативної  температури , пишемо  просто число "23" ("1" не додаємо°)

        "horizon= TRUE - HORIZONTAL (замовчування)  “horizon= FALSE- VERTICAL

 

Подія після вибору кнопки "buttonText, відповідь  повертає в блок “NumPickThermInput,

 “identifyта інші значення:

       "numberSign= знак "-" чи "+" в форматі 0 чи 1

       "number0= число не оброблено 253

       "formatNumber= в форматі числа 1000+253=1253 чи 1000-253=747

       "finalData= в форматі тексту "+25.3°c

Якщо вибір "Cancel",відповідь  “identifyповертається, в блок “NumPickThermCanceled

 

7) “NumPickerTime3byt

PickerTime3byt

Відображає потрійне діалогове вікно для встановлення часу таймера, щоб щось увімкнути та вимкнути в призначений час, зі значенням часу “number2, відповідно кінцевий вигляд значення може бути такий   “09:12  985” . Всі дії робляться в одному вікні.

Відповідності: identify = число(int), message = текст, title = текст, buttonText = текст, defaultValue0 = число(int), defaultValue1 = число(int), minValue2 = число(int), maxValue2 = число(int), defaultValue2 = число(int)

 

Подія після вибору кнопки "buttonText, відповідь  повертає “identifyта числа “number0,number1,number2, в блок “NumPickerTime3bytInput.

До “finalDataповерне текстове значення, наприклад у вигляді “12:55  4321” 

Якщо вибір "Cancel",відповідь  “identifyповертається, в блок “NumPickerTime3bytCanceled

 

8) “SelectPicker” 

SelectPicker

Відображає діалогове вікно вибору номерів та тексту, дає змогу користувачеві вибрати число чи текст з  попередньо визначеного діапазону.  

Тут також є кілька варіантів .

Відповідності: identify = число(int), arrayString = список-текст, logic = число, message = текст, title = текст, buttonText = текст, defaultValue = число(int), minValue = число(int), maxValue = число(int), sizeStep = число(int)

       "logic”=0  вибір чисел з можливістю ""sizeStep"-коефіцієнта" 

       "logic”=1 додаємо незначущій нуль до двозначних чисел. 

       "logic”=2 формат значень на екран з десятками, плюс текстові "arrayString(перші 3 байт), +0.5°С чи 0:0 (0.9) 

       "logic”=3 формат значень на екран з сотнями, плюс текстові "arrayString(перші 3 байт), вага 0.05кг чи 0:00 (0.09) 

       "logic”=4 на екран виводимо текстові "arrayString, наприклад "Неділя , Понеділок, Вівторок, Середа ,Четвер ,П'ятниця ,Субота" (розмежування тексту - кома).

       "logic”=5формат  на екран в .НЕХ форматі, плюс текстовий "arrayString(перший байт), 0хFF чи  FF (255) 

       "logic”>5 звичайний Picker та звичайний вибір чисел , порог "minValue" активне ,

зверніть увагу "minValue" буде вимкнути автоматично, якщо if(logic<=4) minValue=0;

Подія після вибору кнопки "buttonText, відповідь  в блок “SelectPickerInput”  повертає числа “identify“  та "number0.

До “finalDataповерне текстове значення, наприклад:

       "logic”=0  “3” враховано ""sizeStep"-коефіцієнт" 

       "logic”=1  “03”. 

       "logic”=2 +0.5°С чи 0:0 (0.9) 

       "logic”=3 вага 0.05кг чи 0:00 (0.09)      

       "logic”=4"П'ятниця" 

       "logic”=5  0хFF

       "logic”>53” враховується  "minValueниз можливого значення

Якщо вибір "Cancel",число “identifyвідповіді  повертається, в блок “SelectPickerCanceled

 

Скрин блоков в проекті “test_MetodNotifier

using 1

 

 

-------------------

РозширенняFunctiMethod

 

123

Функція `SelButtonAnswer`: ця функція відображає інформаційне діалогове вікно з кнопками, за допомогою яких користувач може надати позитивну відповідь або скасувати. Він приймає такі параметри, як `identify` (ідентифікаційний номер),

 `message` (діалогове повідомлення), 

`fontSize` (розмір шрифту повідомлення),

 `title` (заголовок діалогового вікна) 

і `arrayButton` (список розділених комами написи кнопок (наприклад Left,Right,Cancel)).

"якщо на початку тексту "message" , виявляється фрагмент тексту "<p>", текст буде відображатися як Html Format.

. Подія `SelButtonInput`: ця подія виникає, коли користувач відповідає позитивним введенням у діалоговому вікні. Він відправляє подію з параметром `identify` і відповіддю користувача.

. Подія `SelButtonCanceled`: Ця подія виникає, коли користувач скасував діалогове вікно. Він надсилає подію з параметром `identify`.

-------------------

 

photo 2023 06 29 12 04 15

Цей блок під назвою `HexText`, який створює діалогове вікно зі спеціальною клавіатурою кнопок. Мета цього діалогового вікна — дозволити користувачам вводити текст на основі певних логічних правил.

 

Метод `HexText` приймає кілька параметрів:

 

1. `identify` (int число): ідентифікатор діалогового вікна.

2. `message` (рядок): повідомлення, яке буде показано в діалоговому вікні.

3. `fontSize` (int число): розмір шрифту для тексту в діалоговому вікні.

4. `title` (рядок): заголовок діалогового вікна.

5. `hintText` (рядок): текст підказки, який відображається в полі введення.

6. `symbolLimit` (ціле число): максимальна кількість символів, дозволена в полі введення.

7. `defaultValue` (рядок): значення за замовчуванням для поля введення.

8. `arrayButton` (рядок): рядок, розділений комами, що містить назви кнопок, які будуть відображатися.

9. `logic` (ціле число): значення, що представляє конкретні логічні правила, які будуть застосовані для перевірки введення та форматування.

. Кількість і тип кнопок залежить від логічного значення.

logic==0 шістнадцятковий текст (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

logic==1 десяткові числа (0,1,2,3,4,5,6,7,8,9,.)

logic==2 шістнадцятковий текст (0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,:)

logic==3 час та дата (0,1,2,3,4,5,6,7,8,9,:,.,-,+,)

logic==4 температура (0,1,2,3,4,5,6,7,8,9,+,-,.,)

logic==5 Напруга (0,1,2,3,4,5,6,7,8,9,.)

logic>=6 загальне (1,2,3,4,5,6,7,8,9,0,+,-,±,.,°,c,h,d,m,v,a,t,*,^,µ,~,%,=,<< DEL,CLEAR)

якщо на початку тексту “message” , виявляється фрагмент тексту <p>, текст буде відображатися як Html Format.

 

Кнопки  (0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,:)  додаються до діалогового вікна динамічно на основі визначених логічних правил. Натискання кнопок обробляється для оновлення поля введення та виконання певних дій, таких як очищення введення, видалення символів або додавання певних символів на основі натиснутої кнопки.

 

Діалогове вікно налаштовано за допомогою заголовка та кнопок  `arrayButton` позитивного, нейтрального та негативного значення. 

Позитивна та нейтральна кнопки запускають метод `HexTextInput`, передаючи відповідні параметри на основі натиснутої кнопки.

 Негативна кнопка запускає метод `HexTextCanceled`.

Загалом ці блоки коду призначені для створення діалогового вікна зі спеціальною клавіатурою та обробки введених даних користувачами на основі певних логічних правил.

-------------------

photo 2023 06 29 12 04 17

 Функція «Calculator»:

   - Призначення: ця функція використовується для запуску інтерфейсу калькулятора в програмі.

   - Опис: функція відображає вікно AlertDialog з інтерфейсом калькулятора, що дозволяє користувачам виконувати математичні обчислення. Інтерфейс калькулятора складається з цифрових кнопок (0-9), кнопок оператора (+, -, *, /), кнопки десяткової коми (.), кнопок круглих дужок ( ), кнопки видалення (DEL) і кнопки дорівнює (=) . Користувачі можуть вводити математичні вирази, виконувати обчислення та переглядати результати. Функція обробляє взаємодію користувача з інтерфейсом калькулятора та відображає відповідні повідомлення про помилки, якщо введення недійсне. Крім того, він надає можливість захопити обчислений вираз і результат “CalculatorInput” для подальшої обробки або відображення.

-------------------

 photo 2023 06 29 12 04 14

Блок `SelListSwitch`:

   - Призначення: Ця функція відображає `Діалог сповіщень` зі списком параметрів і прапорцями. Це дозволяє користувачеві вибирати кілька варіантів, установлюючи прапорці.

Це дозволяє користувачеві вибрати кілька опцій зі списку.

   - Параметри:

     - `identify`: представляє ідентифікатор або ім'я, пов'язане зі списком вибору. Це допомагає розрізняти різні екземпляри або використовувати компонент `FunctiMethod`.

     - `itemIndex`: представляє початковий стан вибору параметрів у списку. Це має бути двійковий код, де «1» означає обрану опцію, а «0» — необрану опцію.

     - `title`: представляє назву або заголовок `SelListSwitch`, який відображає список параметрів.

     - `arrayList`: представляє список параметрів, які відображаються в `SelListSwitch`. Це має бути рядок, розділений комами, що містить окремі параметри.

 

. Функція `SelSwitchInput`:

   - Призначення: ця функція викликається внутрішньо функцією `SelListSwitch` для обробки вибору користувачем параметрів у списку.

   - Параметри:

     - `identify`: представляє ідентифікатор або назву, пов’язану зі списком вибору, що дозволяє визначити, який список вибору викликав подію.

     - `hexIndex`: представляє вибрані параметри в шістнадцятковому форматі. Він забезпечує трансформоване представлення вибраних опцій з двійкового на шістнадцяткове.

     - `listIndex`: представляє вибрані параметри в двійковому форматі. Він вказує на стан прапорців, де «1» означає обрану опцію, а «0» вказує на не обрану опцію.

-------------------

 

Блок  `SelListAlert`:

   - Призначення: Ця функція відображає `Діалог сповіщень` зі списком параметрів. Це дозволяє користувачеві вибрати одну опцію зі списку.

   - Параметри:

     - `identify`: представляє ідентифікатор, пов’язаний зі списком вибору, який допомагає визначити конкретне сповіщення, яке викликало подію.

     - `itemIndex`: представляє стандартний індекс вибраного елемента в списку параметрів. Він використовується для попереднього вибору елемента в діалоговому вікні.

     - `title`: представляє назву сповіщення списку вибору. Він відображається у верхній частині діалогового вікна.

     - `arrayList`: представляє рядок параметрів, розділених комами, які відображатимуться в сповіщенні списку вибору.

     

. Функція `SelListInput`:

   - Призначення: ця функція викликається внутрішньо функцією `SelListAlert` для обробки вибору користувачем опції зі списку.

   - Параметри:

     - `identify`: представляє ідентифікатор, пов’язаний зі списком вибору, надаючи спосіб визначити, яке сповіщення викликало подію.

     - `response`: представляє відповідь користувача або вибір зі списку параметрів.

     - `listIndex`: представляє індекс вибраного елемента в списку параметрів.

-------------------

 

204 14

Функція «Delay»:

   - Призначення: ця функція відповідає за введення затримки у виконанні потоку на певний проміжок часу.

   - Опис: функція приймає цілочисельний параметр `miliseconds`, який представляє тривалість затримки в мілісекундах.

 Він використовує метод `sleep`, щоб призупинити виконання потоку на вказаний час.

-------------------

photo 2023 06 29 12 04 16 2

Блок  `showPopupWindow`:

   - Призначення: ця функція відображає спливаюче вікно з заданим повідомленням, кольором шрифту, розміром шрифту та кольором фону.

   - Параметри:

     - `messageTxt`: представляє текстове повідомлення, яке буде показано у спливаючому вікні. Це може бути простий текст або текст у форматі HTML (якщо він починається з "<p>").

     - `fontColor`: визначає колір тексту у спливаючому вікні.

     - `fontSize`: визначає розмір шрифту тексту у спливаючому вікні. За замовчуванням 16.

     - `backgroundColor`: встановлює колір тла спливаючого вікна.

-------------------

Функція `ShowNotification`:

   - Призначення: ця функція відображає сповіщення з певним повідомленням.

   - Параметри:

     - `messageTxt`: представляє текстове повідомлення, яке буде відображено в сповіщенні підказки.

-------------------

204 11

 Функція `EnableBluetooth`: ця функція вмикає функцію Bluetooth на пристрої Android без участі користувача. Він використовує клас `BluetoothAdapter` для доступу до стандартного адаптера Bluetooth і викликає метод `enable`.

 Функція `DisableBluetooth`: ця функція вимикає функцію Bluetooth на пристрої Android без участі користувача. Він використовує клас `BluetoothAdapter` для доступу до стандартного адаптера Bluetooth і викликає метод `disable`.

-------------------

 

204 15

. Функція `Get_lcd_3x`: Ця функція форматує десяткове число з крапкою. Він приймає такі параметри, як `zero` (визначає, чи додавати початковий нуль), `number` (вхідне число) і 

      `logic` = 0 Суворо не більш трьох цифр 00.0  (zero==0 додаємо незначущий “0"(00.0), в інших випадках видаляємо не значущий нуль (_0.0)

      `logic`>= 1 Скільки завгодно може бути цифр  перед точкой ..хх0.0

Цей блок повертає рядкове представлення відформатованого числа ( отримує 123 > повертає >  12.3).

-------------------

 

204 16

Функція `Hex_Dec_ASCII_converter`:

   - Призначення: ця функція забезпечує різні перетворення між десятковими, шістнадцятковими та ASCII-представленнями.

   - Параметри:

     - `var`: вхідна змінна, яку потрібно перетворити.

     - `logic`: ціле число, що вказує на застосовану логіку перетворення.

   - Параметри логіки перетворення:

- logic 0: dec-->ASCII - перетворює десяткові числа на символи ASCII.

- logic 1: hex-->ASCII - перетворює шістнадцяткові числа на символи ASCII.

- logic 2: ASCII-->dec - - перетворює символи ASCII на десяткові числа.

- logic 3: ASCII-->hex - перетворює символи ASCII на шістнадцяткові числа.

- logic 4: dec-->hex - перетворює десяткові числа на шістнадцяткові.

- logic 5: hex-->dec - перетворює шістнадцяткові числа в десяткові.

- logic 6: dec-->bin - перетворює десяткові числа на двійкове подання.

- logic 7: hex-->bin - перетворює шістнадцяткові числа в двійкове подання.

- logic 8 або вище: bin-->dec - перетворює двійкове числа на десяткові.

   Цей блок повернене значення: перетворений результат у вигляді рядка.

Він забезпечує корисні функції для перетворення між двійково,  десятковим, шістнадцятковим і ASCII представленнями значень. 

Приклади використання функції.

1. dec-->ASCII: Перетворення десяткового числа в символ ASCII.
logic=0; //dec-->ASCII
var="65"; // Десяткове число 65
Результат: символ 'A' // Число 65 відповідає символу 'A' в ASCII

2. hex-->ASCII: Перетворення шістнадцяткового числа в символ ASCII.
logic=1; //hex-->ASCII
var="41"; // Шістнадцяткове число "41"
Результат: символ 'A' // Шістнадцяткове число "41" відповідає символу 'A' в ASCII

3. ASCII-->dec: Перетворення символу ASCII в десяткове число.
logic=2; //ASCII-->dec
var="A"; // Символ 'A'
Результат: 65 // Символ 'A' в ASCII відповідає десятковому числу 65

4. ASCII-->hex: Перетворення символу ASCII в шістнадцяткове число.
logic=3; //ASCII-->hex
var="A"; // Символ 'A'
Результат: "41" // Символ 'A' в ASCII відповідає шістнадцятковому числу "41"

5. dec-->hex: Перетворення десяткового числа в шістнадцяткове.
logic=4; //dec-->hex
var="65"; // Десяткове число 65
Результат: "41" // Десяткове число 65 відповідає шістнадцятковому числу "41"

6. hex-->dec: Перетворення шістнадцяткового числа в десяткове.
logic=5; //hex-->dec
var="41"; // Шістнадцяткове число "41"
Результат: 65 // Шістнадцяткове число "41" відповідає десятковому числу 65

7. dec-->bin: Перетворення десяткового числа в двійкове.
logic=6; //dec-->bin
var="65"; // Десяткове число 65
Результат: "01000001" // Десяткове число 65 відповідає двійковому числу "01000001"

8. hex-->bin: Перетворення шістнадцяткового числа в двійкове.
logic=7; //hex-->bin
var="41"; // Шістнадцяткове число "41"
Результат: "01000001" // Шістнадцяткове число "41" відповідає двійковому числу "01000001"

9. bin-->dec: Перетворення двійкового числа в десяткове.
logic=8; //bin-->dec
var="01000001"; // Двійкове число "01000001"
Результат: 65 // Двійкове число "01000001" відповідає десятковому числу 65

Ці приклади ілюструють використання функції Hex_Dec_ASCII_converter для різних типів логіки перетворення разом з вхідними даними та очікуваними відповідями.

-------------------

 blocks6733

Функція sectionByte:

призначена для ОБРОБКИ чисел між різними форматами представлення (двійковим, десятковим, шістнадцятковим)
та вилучення з них окремих байтів.

Функція приймає три параметри:
- "var": вхідне число для конвертації у відповідний формат. Формат може бути двійковим, десятковим або шістнадцятковим.
- "logic": логічне значення, що визначає операцію, яку слід виконати. Значення logic вказує на тип конвертації або взаємодію з окремими байтами числа.
- "byteNumber": номер байт, який необхідно використати для вилучення окремих байт числа "var".
Призначення logic:
- logic=0: bin-->bin - вилучення байт у двійковому форматі, з двійкового рядка.
- logic=1: bin-->dec - конвертація з двійкового в десятковий формат.
- logic=2: bin-->hex - конвертація з двійкового в шістнадцятковий формат.
- logic=3: hex-->bin - конвертація з шістнадцяткового в двійковий формат.
- logic=4: hex-->dec - конвертація з шістнадцяткового в десятковий формат.
- logic=5: hex-->hex - вилучення з шістнадцяткового числа, байта у шістнадцятковому форматі.
- logic=6: dec-->bin - конвертація з десяткового в двійковий формат.
- logic=7: dec-->dec - вилучення з десяткового числа, байта у десятковому форматі.
- logic=8: dec-->hex - конвертація з десяткового в шістнадцятковий формат.
- logic>=9: dec-->bin - конвертація з десяткового в двійковий рядок.

Приклади:
 

logic=0: bin-->bin Вилучення з двійкового рядка , байт у двійковому форматі.
var = "000011101100110010100111" (969895 в десятковому форматі)
byteNumber = 1 (вказує, що ціль обробки 2й байт)
Результат: "11001100" (вилучено другий байт у двійковому форматі)

logic=1: bin-->dec Конвертація з двійкового в десятковий формат.
var = "000011101100110010100111" (969895 в десятковому форматі)
byteNumber = 1 (вказує, що ціль обробки 2й байт)
Результат: "204" (вилучено другий байт у десятковому форматі)

logic=2: bin-->hex Конвертація з двійкового в шістнадцятковий формат.
var = "000011101100110010100111" (969895 в десятковому форматі)
byteNumber = 0 (вказує, що ціль обробки 1й байт)
Результат: "CC" (вилучено перший байт у шістнадцятковому форматі)

logic=3: hex-->bin Конвертація з шістнадцяткового в двійковий формат.
var = "0ECCA7" (969895 в десятковому форматі)
byteNumber = 1 (вказує, що ціль обробки 2й байт)
Результат: "11001100" (вилучено другий байт у двійковому форматі)

logic=4: hex-->dec Конвертація з шістнадцяткового в десятковий формат.
var = "0ECCA7" (969895 в десятковому форматі)
byteNumber = 1 (вказує, що ціль обробки 2й байт)
Результат: "204" (вилучено другий байт у десятковому форматі)

logic=5: hex-->hex Вилучення з шістнадцяткового числа , байт у шістнадцятковому форматі.
var = "0ECCA7" (969895 в десятковому форматі)
byteNumber = 0 (вказує, що ціль обробки 1й байт)
Результат: "CC" (вилучено перший байт у шістнадцятковому форматі)

logic=6: dec-->bin Конвертація з десяткового в двійковий формат.
var = 969895
byteNumber = 1 (вказує, що ціль обробки 2й байт)
Результат: "11001100" (вилучено другий байт у двійковому форматі)

logic=7: dec-->dec Вилучення з десяткового числа , байт у десятковому форматі.
var = 969895
byteNumber = 1 (вказує, що ціль обробки 2й байт)
Результат: "204" (вилучено другий байт у десятковому форматі)

logic=8: dec-->hex Конвертація з десяткового в шістнадцятковий формат.
var = 969895
byteNumber = 0 (вказує, що ціль обробки 1й байт)
Результат: "A7" (вилучено перший байт у шістнадцятковому форматі)

logic>=9: dec-->bin Конвертація з десяткового в двійковий рядок.
var = 16777215 (мах 2147483647 = 01111111111111111111111111111111)
logic = 9 (перетворення в двійковий формат)
Результат: "111111111111111111111111" (двійкове представлення числа)

-------------------

 

 204 17

Функція Bits_ClrSetRet:

призначена для виконання побітової обробки змінних.

Основна мета цього методу - змінювати значення певного біту у вказаній змінній (`var`) відповідно до вказаного логічного операції (`logic`) на певному місці (`bitno`).

1. `var`: Це змінна, у якій ви хочете змінити певний біт. Вона може бути задана у вигляді рядка, що представляє десяткове або двійкове значення. Наприклад, "10" або "00001010".

2. `bitno`: Це позиція біту, який ви хочете змінити. Ця позиція повинна бути в межах від 0 до 7, оскільки ви працюєте з 8-бітовими значеннями. Наприклад, якщо `bitno` = 3, ви змінюєте х "0000х010".

3. `logic`: Це ціле число, яке вказує, яку логічну операцію ви хочете виконати з бітом. Значення може бути від 0 до 7. Ці значення відображають такі операції:

- 0: Скинути (зробити 0) біт у вказаній позиції. (буде отримано результат у десятковому форматі)
- 1: Встановити (зробити 1) біт у вказаній позиції.(результат у десятковому форматі)
- 2: Інвертувати біт у вказаній позиції (змінити 1 на 0 і навпаки).(результат у десятковому форматі)
- 3: Прочитати (повернути значення) біту у вказаній позиції. Повертає 1, якщо біт у вказаній позиції дорівнює 1, і 0 в іншому випадку.(отриманий результат 0 чи 1 )
- 4: Скинути (зробити 0) біт у вказаній позиції. (буде отримано результат у двійковому форматі)
- 5: Встановити (зробити 1) біт у вказаній позиції.(результат у двійковому форматі)
- 6: Інвертувати біт у вказаній позиції (змінити 1 на 0 і навпаки).(результат у двійковому форматі)
- 7 і більше: Прочитати біту у вказаній позиції. Повертає 1, якщо біт у вказаній позиції дорівнює 1, і 0 в іншому випадку.

Функція повертає рядок, який представляє результат операції.
Якщо `logic` дорівнює 0, 1 або 3, результатом є десяткове число "10",
`logic` дорівнює 4, 5 або 6, результатом є рядок "00001010",
що представляє двійкове значення після виконання операції.
В інших випадках повертається ціле число,
що представляє результат логічної операції або значення біту.

короткі практичні приклади для кожної логічної операції з використанням даного методу `Bits_ClrSetRet`:

Приклади:

1. Скидання біту (logic = 0):
- Умова: `var = 10`, `bitno = 2`.
- Результат: Запис `10` у двійковій системі це `00001010`, після скидання біту 2, ми отримаємо `8` (0b00001000).

2. Встановлення біту (logic = 1):
- Умова: `var = 5`, `bitno = 1`.
- Результат: Запис `5` у двійковій системі це `00000101`, після встановлення біту 1, ми отримаємо `7` (0b00000111).

3. Інверсія біту (logic = 2):
- Умова: `var = 12`, `bitno = 3`.
- Результат: Запис `12` у двійковій системі це `00001100`, після інверсії біту 3, ми отримаємо `8` (0b00001000).

4. Читання біту (logic = 3):
- Умова: `var = 9`, `bitno = 0`.
- Результат: Запис `9` у двійковій системі це `00001001`, біт 0 це `1`, тому результат буде `1`.

5. Скидання біту (logic = 4):
- Умова: `var = 6`, `bitno = 1`.
- Результат: Запис `6` у двійковій системі це `00000110`, після скидання біту 1, ми отримаємо `00000100` .

6. Встановлення біту (logic = 5):
- Умова: `var = 3`, `bitno = 2`.
- Результат: Запис `3` у двійковій системі це `00000011`, після встановлення біту 2, ми отримаємо `00000111` .

7. Інверсія біту (logic = 6):
- Умова: `var = 8`, `bitno = 0`.
- Результат: Запис `8` у двійковій системі це `00001000`, після інверсії біту 0, ми отримаємо `00001001` .

8. Перевірка біту (logic >= 7):
- Умова: `var = 12`, `bitno = 2`.
- Результат: Запис `12` у двійковій системі це `00001100`, біт 2 це `1`, тому результат буде `1`.

-------------------

 

204 12

`setEnabledAllTime(boolean EnabledAllTime)`: цей блок коду дозволяє вам контролювати, чи екран програми залишається увімкненим безперервно чи дотримується режиму сну за замовчуванням. Викликаючи цю функцію та передаючи логічне значення, ви можете увімкнути або вимкнути перехід екрана в сплячий режим. Це може бути корисним у випадках, коли ви хочете залишити екран увімкненим, поки програма активна.

 `setFullBrightness(int logic)`: цей блок коду відповідає за налаштування рівня яскравості екрана. Параметр `logic` визначає рівень яскравості на основі різних опцій. Викликаючи цю функцію та передаючи ціле значення, ви можете встановити потрібний рівень яскравості екрана. Це може бути корисним для додатків, які вимагають певних налаштувань яскравості, наприклад, додатків, яким потрібна максимальна яскравість для кращої видимості або мінімальна яскравість для економії батареї.

-------------------

 

204 1

1. `AndroidVersion()`: цей блок коду повертає поточну версію операційної системи Android, яка працює на пристрої. Він отримує версію Android, як-от Android 10 або Android 11. Цю інформацію можна використовувати для виконання операцій, пов’язаних із версією, або для відображення версії Android в інтерфейсі користувача.

2. `SdkVersion()`: цей блок коду повертає версію SDK програмного забезпечення, що працює на пристрої. Версія SDK представляє рівень API платформи Android. Він надає інформацію про можливості та функції, доступні в SDK. Цю інформацію можна використовувати для умовного виконання коду на основі версії SDK, забезпечуючи сумісність із різними версіями Android.

3. `NameModel()`: цей блок коду повертає виробника та назву моделі пристрою. Він отримує виробника пристрою (наприклад, Samsung, HTC тощо) і назву моделі (наприклад, Galaxy S10, Pixel 3 тощо). Ця інформація може бути корисною для індивідуального налаштування пристрою або для відображення інформації про пристрій в інтерфейсі користувача програми.

-------------------

204 22

Ця функція визначає метод SetShadow,

 який робить зсув тіні (dx_y) на текст.

і колір тіні (color).

 Він отримує основний текст  з CheckBox, передає його на TextView, 

а потім встановлює тіньовий шар для тексту TextView,

 використовуючи надані параметри dx_y та color.

-------------------

 2024 9 9 55

Функція Time_Date_UTC:

призначена для обробки часу та дати з врахуванням різних форматів залежно від значення параметра "logic". Початковий час у форматі "HH:mm:ss" та дата у форматі "dd-MM-YYYY" конвертуються з врахуванням зміщення часового поясу UTC, також можливо варіант - день тижня в результат.

  Вхідні параметри:
- `time_HH_mm_ss`: Рядок, що представляє час у форматі "HH:mm:ss" (години:хвилини:секунди).
- `date_dd_MM_YYYY`: Рядок, що представляє дату у форматі "dd-MM-YYYY" (день-місяць-рік).
- `timezone_UTC`: Ціле число, що представляє зсув часового поясу в годинах відносно UTC.
- `logic`: Ціле число, яке визначає формат виводу результату.

 Параметр "logic" впливає на формат виводу і має наступні значення:
- `logic==0`: Висновок у форматі "HH:mm.ss dd-MM-YYYY".
- `logic==1`: Висновок у форматі "HH:mm dd-MM-YYYY".
- `logic==2`: Назва дня тижня представлена цифрою від 1 до 7, де 1 відповідає понеділку, а 7 - неділя.
- `logic==3`: Назва дня тижня представлена скороченою абревіатурою українською мовою (наприклад, "Пн" для понеділка).
- `logic==4`: Назва дня тижня представлена повним написом українською мовою (наприклад, "Понеділок").
- `logic==5`: Назва дня тижня представлена повним написом німецькою мовою (наприклад, "Montag").
- `logic>=6`: Назва дня тижня представлена повним написом англійською мовою (наприклад, "Monday").

 

-------------------

blocks144

. Функція `dataAktuell_Past`" призначена для обчислення різниці між двома датами: "dataAktuell" та "dataPast".

1. Логіка "logic == 0":
- Формат вхідних даних: Рядки "dataAktuell" та "dataPast" можуть бути в одному з наступних форматів: "HH:mm.ss dd-MM-yyyy" або "HH:mm dd-MM-yyyy".
- Повертає: Рядок, що представляє різницю між датами у форматі "dd дн. HH:mm.ss", "HH:mm.ss", "hh:мм.сс" або "ss сек.", залежно від того, чи є різниця в днях та годинах.

2. Логіка "logic == 1":
- Цей варіант логіки використовується для обчислення кількості секунд з початку епохи Unix для вказаної дати та часу.
- Вхідний параметр: "dataAktuell" - Рядок, що відображає дату та час. ("dataPast" не враховується, тому не має значення у розрахунках).
- Формат вхідних даних: Рядок "dataAktuell" повинен бути в одному з наступних форматів: "HH:mm.ss dd-MM-yyyy" або "HH:mm dd-MM-yyyy".
- Повертає: Рядок, що містить кількість секунд з початку епохи Unix для вказаної дати та часу в форматі "dddddddddd" .

3. Логіка "logic >= 2":
- Цей варіант логіки використовується для визначення дати та часу з початку епохи Unix на основі кількості секунд.
- Вхідний параметр: "dataAktuell" - Рядок, що відображає кількість секунд з початку епохи Unix. ("dataPast" не враховується).
- Формат вхідних даних: Рядок "dataAktuell" повинен бути в форматі "dddddddddd" (всього 10 цифр), де "d" - цифра від 0 до 9.
- Повертає: Рядок, що представляє дату та час з початку епохи Unix у форматі "HH:mm.ss dd-MM-yyyy". Якщо формат введення "dataAktuell" не відповідає вказаному, повертається рядок "помилк.Вводу".

-------------------

 blocks1334

Функція sumBetweenTag:

призначена для обробки текстових даних "dataTxt" з метою знаходження всіх чисел між двома вказаними тегами "tagStart" та "tagEnd".
Після цього функція обчислює суму цих чисел та повертає результат відповідно до вказаного логічного значення.

Як користуватися:
1. TagOk_1, TagOk_2: Символи-теги, які вказують на строки, які потрібно обробити. Якщо вони не вказані (порожні), будуть оброблені всі строки.
2. tagStart, tagEnd: Початковий та кінцевий теги, між якими знаходяться числа для обробки.
3. dataTxt: Текст, в якому шукаються числа.
4. logic: Логічне значення, що визначає, який тип обробки чисел застосовується:
- `0`: Обчислення суми чисел.
- `1`: Обчислення різниці між найбільшим і найменшим числом.
- `10`: Вивід знайдених чисел та обчислення їх суми.
- `11`: Вивід знайдених чисел та обчислення різниці між найбільшим і найменшим числами.

Приклади використання:

String dataTxt = "💡05/12/2023 '11418' 235 кВт/г. 394.8грн.
♨️01/10/2023 '546' 3м/куб 23.4+18=41.4грн.
💧01/10/2023 '161' 1м/kуб 28.46+15.88=44.34гpн.
♨️02/11/2023 '549' 4м/куб 31.2+18=49.2грн.
💧02/11/2023 '162' 4м/kуб. 113.84+15.88=129.72гpн
💡01/02/2024 '11764' 346 кВт/г. 581.28грн.
💧01/02/2024 '166' 2м/kуб 56.92+15.88=72.8гpн.
♨️01/02/2024 '553' 3м/куб 23.4+18=41.4грн.
♨️01/03/2024 '556' 3м/куб 23.4+18=41.4грн.
💡01/03/2024 '11844' 80 кВт/г. 134.41грн.";
String TagOk_1 = "♨️";
String TagOk_2 = "";
String tagStart = "' ";
String tagEnd = "м/куб";


Результати для різних варіантів `logic`:
1. `int logic = 0;`
`String result = "13";`
Сума всіх чисел між тегами `" ' "` та `"м/куб"` у вхідному тексті `dataTxt`. Результат: `13`.

2. `int logic = 1;`
`String result = "1";`
Різниця між максимальним та мінімальним числами між тегами `" ' "` та `"м/куб"` у вхідному тексті `dataTxt`. Результат: `1`.

3. `int logic = 10;`
`String result = "3+4+3+3=13";`
Сума всіх чисел між тегами `" ' "` та `"м/куб"` у вхідному тексті `dataTxt`, разом із виводом знайдених чисел. Результат: `3+4+3+3=13`.

4. `int logic = 11;`
`String result = "4-3=1";`
Різниця між максимальним та мінімальним числами між тегами `" ' "` та `"м/куб"` у вхідному тексті `dataTxt`, разом із виводом знайдених чисел. Результат: `4-3=1`.

Якщо числа не знайдено, функція поверне `String result = "*0*".

-------------------

 

 blocks1333

Функція parseNumbersFromString:

використовується для вилучення та відображення певної кількості символів з текстового рядка.

Параметри функції:
- `dataTxt`: Текстовий рядок, з якого будуть вилучені символи.
- `lineTag`: Символ або послідовність символів, яка вказує на початок рядка, який потрібно обробити.
- `startFromNumber`: Номер символу, з якого починається вилучення даних.
- `quantityNumbers`: Кількість символів, які потрібно вилучити.
- `returnEndNo`: Значення, яке буде повернуто, якщо рядок не знайдено або його довжина недостатня для вилучення символів.

Алгоритм роботи:
1. Функція шукає перший рядок в `dataTxt`, який починається з символу `lineTag`.
2. Якщо рядок не знайдено, функція повертає `returnEndNo`.
3. Функція перевіряє, чи довжина рядка більша або дорівнює `startFromNumber + quantityNumbers`.
4. Якщо довжина рядка недостатня, функція повертає `returnEndNo`.
5. Функція вилучає з рядка `quantityNumbers` символів, починаючи з `startFromNumber`.
6. Функція повертає знайдені символи.

Пояснення для кожного варіанту `logic`:
- `logic == 0`: У цьому випадку не використовується тег `lineTag`. Функція бере підстрічку з вхідних даних `dataTxt`, починаючи з позиції `startFromNumber` і зазначеної кількості символів `quantityNumbers`. Результат надсилається в `result`.
- `logic == 1`: Якщо тег `lineTag` знайдено у тексті, відбувається пошук після текстового тега `lineTag` у вхідних даних `dataTxt`. Підстрічка береться, що починається після кінцевої позиції `lineTag` і після кінцевої позиції значення `startFromNumber` (`lineTag + startFromNumber`). Довжина символів `quantityNumbers` виявляється і надсилається в `result`. Якщо `lineTag` не знайдено або результат виходить за межі довжини рядка, повертається значення `returnEndNo`.
- `logic == 2`: У цьому випадку все те ж саме, що й в `logic == 1`, але після виявлення результата підстрічки, результат перевіряється на наявність пробілів. Якщо пробіли є, надсилається `returnEndNo`.
- `logic >= 3`: У цьому випадку все те ж саме, що і в `logic == 1`, але якщо у виявленому результаті є пробіли, то всі пробіли видаляються. Результат надсилається в `result`.

Приклади:

dataTxt = "]00423e020101060718x20015 2e60718d810";
returnEndNo = "-0-";

// Приклад 1 для logic == 0
String lineTag = "="; // Встановлюємо тег "=" для пошуку
int startFromNumber = 4; // Починаємо з позиції 4
int quantityNumbers = 8; // Вилучаємо 8 символів
int logic = 0; // Встановлюємо логіку в 0
// Результат: "3e020101"

// Приклад 2 для logic == 0
lineTag = ""; // Пустий тег, що вказує на відсутність
startFromNumber = 30; // Починаємо з позиції 30
quantityNumbers = 9; // Вилучаємо 9 символів (перевищення меж)
// Результат: "-0-"

// Приклад 1 для logic == 1
lineTag = "x"; // Встановлюємо тег "x" для пошуку
startFromNumber = 6; // Починаємо з позиції 6
quantityNumbers = 6; // Вилучаємо 6 символів
logic = 1; // Встановлюємо логіку в 1
// Результат: "2e6071"

// Приклад 2 для logic == 1
lineTag = "x"; // Встановлюємо тег "x" для пошуку
startFromNumber = 4; // Починаємо з позиції 4
quantityNumbers = 35; // Вилучаємо 35 символів (перевищення меж)
// Результат: "-0-"

// Приклад 1 для logic == 2
lineTag = "x"; // Встановлюємо тег "x" для пошуку
startFromNumber = 8; // Починаємо з позиції 8
quantityNumbers = 4; // Вилучаємо 4 символи
logic = 2; // Встановлюємо логіку в 2
// Результат: "6071"

// Приклад 2 для logic == 2
lineTag = "x"; // Встановлюємо тег "x" для пошуку
startFromNumber = 4; // Починаємо з позиції 4
quantityNumbers = 8; // Вилучаємо 8 символів (знайдено з пробілом)
// Результат: "-0-"

// Приклад 1 для logic >= 3
lineTag = "x"; // Встановлюємо тег "x" для пошуку
startFromNumber = 4; // Починаємо з позиції 4
quantityNumbers = 4; // Вилучаємо 4 символи
logic = 3; // Встановлюємо логіку в 3
// Результат: "52e"

// Приклад 2 для logic >= 3
lineTag = ""; // Пустий тег, що вказує на відсутність
startFromNumber = 4; // Починаємо з позиції 4
quantityNumbers = 4; // Вилучаємо 4 символи (немає загального тега)
// Результат: "-0-"

-----------------

 

 blocks tigi

Функція parseNumbersFromString:

Ця функція призначена для аналізу даних, отриманих з сервісу ThingSpeak™ у форматі JSON: 

{"created_at":"2022-11-19T14:23:57Z","entry_id":4,"field1":"1234"}

трохи раніше вже писалось у форумі про цей приклад , та цю можливість обробляти рядок JSON (`JsonStrings`). 

Метод `AnswerThingSpeakAnalysis` призначено полегшити робити розбір текстового рядка

- `JsonStrings`: Рядок JSON, що містить дані з ThingSpeak.
- `UtcField`: Корекція часового поясу UTC при logic<=1 .   Також при logic>=2 значення `UtcField` використовується для зчитування полів від field1 до field8 .
- `logic`: Логіка опрацювання, яка визначає, які дані треба витягнути з `JsonStrings`.

Кілька прикладів:

JsonStrings="{"created_at":"2024-02-10T08:36:03Z","entry_id":65,"field1":"123243878","field2":"87654","field3":"9087at","field4":"4321","field5":"898","field6":"232","field7":"454","field8":"qwert"}";
// Приклад №1:
UtcField=0; // Параметр UtcField дорівнює 0, тому UTC-корекція не застосовується.
logic=0; // Логіка logic дорівнює 0, отже, аналізується час створення ("created_at").
// Результат: 10:36.03 10-02-2024 // Очікуваний результат відповідає часу та даті створення з урахуванням локального часового поясу

// Приклад №2:
UtcField=5; // Параметр UtcField дорівнює 5, тому UTC-корекція застосовується +5 годин .
logic=0; // Логіка logic дорівнює 0, отже, аналізується час створення ("created_at").
// Результат: 13:36.03 10-02-2024 // Переведений відповідно до UTC+5 час та дата

// Приклад №3:
UtcField=х; // будь яке ціле число для UtcField (х), тому як при logic=1 UTC-корекція не застосовується.
logic=1; // Логіка logic дорівнює 1, отже, аналізується номер відповіді ("entry_id").
// Результат: "65" // Отриманий номер відповіді

// Приклад №4:
UtcField=1; // Параметр UtcField дорівнює 1, аналізується значення поля "field1".
logic=2; // Логіка logic дорівнює 2, отже, можна отримати значення кожного з полів field1 до field8
// Результат: "123243878" // Отримане значення поля "field1" з урахуванням UtcField=1

// Приклад №5:
UtcField=2; // Параметр UtcField дорівнює 2, аналізується значення поля "field2".
logic=2; // Логіка logic дорівнює 2, можна отримати значення кожного з полів field1 до field8
// Результат: "87654" // Отримане значення поля "field2" з урахуванням UtcField=2

// Приклад №6:
UtcField=3; // Параметр UtcField дорівнює 3, аналізується значення поля "field3".
logic=2; // Логіка logic дорівнює 2, можна отримати значення кожного з полів field1 до field8
// Результат: "9087at" // Отримане значення поля "field3" з урахуванням UtcField=3

// Приклад №7:
UtcField=8; // Параметр UtcField дорівнює 8, аналізується значення поля "field8".
logic=2; // Логіка logic дорівнює 2, отже, можна отримати значення кожного з полів field1 до field8
// Результат: "qwert" // Отримане значення поля "field8" з урахуванням UtcField=8

Ці приклади показують, як метод аналізує різні аспекти вхідного JSON-рядка

в залежності від значень параметрів UtcField і logic,  повертає відповідні результати.

-------------------

 

 

РозширенняGoliafMethod

photo 2023 06 30 19 40 35 3

Блок `StringPicker`  дозволяє користувачеві вибрати текстове значення зі списку та надає додаткові параметри за допомогою кнопок. 

Введення даних:

- `identify` (int число): ідентифікатор для розрізнення різних екземплярів блоку `StringPicker`.

- `arrayString` (рядок): значення, розділені комами, що представляють параметри, доступні для вибору.

- `message` (рядок): додаткове повідомлення або інформація, що відображається в діалоговому вікні.

- `title` (рядок): заголовок діалогу.

- `textMainButton` (рядок): значення, розділені комами, що представляють мітки для основних кнопок.

- `defaultValue` (ціле число): значення за замовчуванням або початковий індекс вибору.

- `buttonTextSwitch` (рядок): значення, розділені комами, що представляють мітки для кнопок перемикання.

- `defaultSwitch` (рядок): значення, розділені комами, що представляють початковий стан кнопок перемикання.

 

Вихід:

- Подія `StringPickerInput`: ця подія запускається, коли користувач підтверджує свій вибір. Він забезпечує такі вихідні параметри:

   - `identify` (int число): ідентифікатор для ідентифікації блоку `StringPicker`.

   - `response` (рядок): мітка головної кнопки, яку натиснув користувач.

   - `number0` (int число): вибраний індекс або значення зі списку.

   - `finalData` (рядок): вибране значення зі списку.

   - `switchState` (рядок): рядок, що представляє стан кнопок перемикача. Він складається з трьох цифр (0 або 1), що представляють стан кожної кнопки перемикача (наприклад, «101»).

 

- Подія `StringPickerCanceled`: ця подія запускається, коли користувач скасував вибір. Він надає параметр `identify` для ідентифікації екземпляра блоку `StringPicker`.

-------------------

 

photo 2023 06 30 19 40 35 2

`HintGoliafWindow` застосовується на створення та відображення діалогового вікна з підказками та полями введення в мобільній програмі. 

1. Введення даних:

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

 Кількість полів введення залежить від параметра `quantity` (до 9), переданого в метод `HintGoliafWindow`. Кожне поле введення відповідає певній підказці, та може бути заповнене початковими значення з параметра `listText`.

 

2. Кількість даних у результаті:

Обсяг даних у результаті залежить від кількості створених полів введення та введених користувачем даних. Кожне значення поля введення об’єднується розділювачем-комою, щоб утворити єдиний рядок, що містить усі введені значення. Отриманий рядок матиме довжину, рівну кількості полів введення.

 

3. Вихід зовнішнього результату:

- `HintGoWindowInput`: ця подія спрацьовує, коли користувач відповідає на діалогове вікно, натискаючи позитивну ліву кнопку (`buttonTextLeft`) або позитивну праву  кнопку (`buttonTextRight`). Подія містить параметр `identify`, відповідь користувача (текст лівої кнопки або текст правої кнопки) і об’єднаний рядок вхідних значень як `listText`. Ця подія може бути зафіксована та оброблена мобільним додатком для виконання подальших дій на основі введення користувача.

 

- `HintGoWindowCanceled`: ця подія запускається, коли користувач скасував діалогове вікно, натиснувши негативну кнопку ("Скасувати"). Подія містить параметр `ідентифікувати`. Ця подія може бути зафіксована та оброблена мобільним додатком для обробки скасування та виконання будь-яких необхідних дій.

-------------------

 

photo 2023 06 30 19 40 35

"Picker_Hex2_4" надає користувачеві інтерфейс вибору числа, що дозволяє йому вибирати значення в діапазоні від 00 до FF (шістнадцятковий формат) для чотирьох різних чисел: `numberPicker0`, `numberPicker1`, `numberPicker2` і `numberPicker3`. Користувач може регулювати значення цих об’єктів NumberPicker, прокручуючи або вручну вводячи потрібні значення.

 

Початкові значення:

- `identify`: ціле число, що представляє ідентифікаційне значення.

- `Text_0x`: префікс , з допомогою котрого форматування результата FF або 0xFF.

- `defaultValue0, defaultValue1, defaultValue2, defaultValue3`: 

встановлюємо початкові значення , у десятковому форматі.

 

. Вихід зовнішнього результату:

 Можуть бути викликані дві події:

- Подія Hex2_4_PickerInput: ця подія надсилається, коли користувач натискає позитивну кнопку (OK) у вікні "Picker_Hex2_4". Він включає ідентифікаційне значення (`identify`), 

- `number 0`, `number1`, `number2` і `number3`: int числа, що представляють вибрані значення з об’єктів NumberPicker.

- `finalData`: рядок, що представляє комбіновані шістнадцяткові значення вибраних чисел, наприклад, "00FF00FF".

- `finalList`: рядок, що представляє окремі шістнадцяткові значення, розділені комами, наприклад, "00,FF,00,FF".

 

- Подія `Hex2_4_PickerCanceled`: ця подія надсилається, коли користувач натискає негативну кнопку (Скасувати) у вікні "Picker_Hex2_4". Він містить ідентифікаційне значення (`identify`), яке вказує, що користувач скасував вибір.

 -------------------

-------------------

Файли

AIX: PickerMetod.aix (24КБ)

AIX: MetodNotifier.aix(30КБ)

AIX: FunctiMethod.aix(58КБ)

AIX: GoliafMethod.aix(38КБ)

AIA: test_MetodNotifier.aia (147КБ)

APK:test_MetodNotifier.apk (3,09МБ)

 

JAVA: V1.1 MetodNotifier.java

MetodNotifier.java.txt

/**
* Optional upgrade, to extend the notifier, with a little variety to change the variables.
* notifier in App Inventor, but based upon the original code.
* Credits: @HalAbelson - MIT who wrote the original notifier code
* Credits: @Shreyash for the Rush extension builder
* Credits: @TIMAI2 available source was the basis of the upgrade
* Credits: @Gordon_Lu available source

* Credits: @BBL  https://youtu.be/w9iJS580CMg

* Additions: @Oto, 24-03-2023(Ukraine)
*/

package sxem.org.metodnotifier;

import android.app.Activity;
import android.app.AlertDialog;
import com.google.appinventor.components.runtime.EventDispatcher;
import com.google.appinventor.components.annotations.SimpleEvent;
import com.google.appinventor.components.annotations.SimpleFunction;
import com.google.appinventor.components.runtime.AndroidNonvisibleComponent;
import com.google.appinventor.components.runtime.ComponentContainer;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.view.View;
import android.content.DialogInterface;
import android.view.inputmethod.InputMethodManager;
import android.content.Context;
import android.widget.NumberPicker;
import android.graphics.Typeface;
public class MetodNotifier extends AndroidNonvisibleComponent {
private final Context context;
private final Activity activity;
public MetodNotifier(ComponentContainer container){
super(container.$form());
activity = container.$context();
this.context = container.$context();
}
/** ######################################################
*
*/

@SimpleFunction(description = "Показує діалогове вікно запитань, яке встановлює користувач, і дозволяє "
+ " позитивну відповідь або скасування від користувача. Викликається відповідна подія \n "
+ "від трьох кнопок \"Left\",\"Right\",\"Cancel\" \n ")
public void InfoChoiceDialog(final int identify, String message, String title, String buttonTextLeft, String buttonTextRight, String buttonTextCancel) {
InfoChoiceAlert(identify, message, title, buttonTextLeft, buttonTextRight, buttonTextCancel);
}
private void InfoChoiceAlert(final int identify, String message, String title, String buttonTextLeft, String buttonTextRight, String buttonTextCancel) {

AlertDialog.Builder alert = new AlertDialog.Builder(activity);
alert.setTitle(title);
alert.setMessage(message);

alert.setPositiveButton(buttonTextLeft, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
InfoChoiceInput(identify, buttonTextLeft.toString());
}
});
alert.setNeutralButton( buttonTextRight, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
InfoChoiceInput(identify, buttonTextRight.toString());
}
});
alert.setNegativeButton(buttonTextCancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
InfoChoiceCanceled(identify);
//AfterQuestion("Cancel");
}
});
alert.show();
}
@SimpleEvent(
description = "Event raised after the user has responded to ShowQuestionDialog.")
public void InfoChoiceInput(final int identify, String response) {
EventDispatcher.dispatchEvent(this, "InfoChoiceInput", identify, response);
}
@SimpleEvent(
description = "Подія викликана, коли користувач скасував ПоказатиТекстДіалог.")
public void InfoChoiceCanceled(final int identify) {
EventDispatcher.dispatchEvent(this, "InfoChoiceCanceled", identify);
}
/** ##########################################################################
* LOGIN/PASS ENTRY DIALOG , String hintUp, String hintDown
*/

@SimpleFunction(description = "Показує подвійне діалогове вікно, де користувач може ввести назву"
+ "і деталі назви. Користувач також може скасувати")

public void DoubleWindowDialog(final int identify, String message, String title, String hintUp, String hintDown, String textUp, String textDown, boolean cancelable) {
DoubleWindowTxt( identify, message, title, hintUp, hintDown, textUp, textDown, cancelable);
}
private void DoubleWindowTxt(final int identify, String message, String title, String hintUp, String hintDown, String textUp, String textDown, boolean cancelable) {

AlertDialog.Builder alert = new AlertDialog.Builder(activity);

alert.setTitle(title);
alert.setMessage(message);
alert.setCancelable(false);
LinearLayout layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.VERTICAL);

final EditText inputLogin = new EditText(activity);
inputLogin.setHint(hintUp);
inputLogin.setText(textUp);
layout.addView(inputLogin);

final EditText inputPass = new EditText(activity);
inputPass.setHint(hintDown);
inputPass.setText(textDown);
layout.addView(inputPass);

alert.setView(layout);
alert.setPositiveButton("OK!", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
HideKeyboard((View) layout);
DoubleWindowInput(identify, inputLogin.getText().toString(), inputPass.getText().toString());
}
});

if (cancelable) {
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
DoubleWindowCanceled(identify);
HideKeyboard((View) layout);
}
});
}
alert.show();
// Request focus after showing dialog Запитати фокус після показу діалогу
inputLogin.requestFocus();
// Show soft keyboard Показати програмну клавіатуру
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
}
@SimpleEvent(description = "Подія, що виникає після того, як користувач відповів на ДубльВікнаТекст.")
public void DoubleWindowInput(final int identify, String textUp, String textDown) {
EventDispatcher.dispatchEvent(this, "DoubleWindowInput", identify, textUp, textDown);
}
@SimpleEvent(description = "Event raised when the user canceled ДубльВікнаТекст.")
public void DoubleWindowCanceled(final int identify) {
EventDispatcher.dispatchEvent(this, "DoubleWindowCanceled", identify);
}

/** #########################################################################
*/
@SimpleFunction(description = "Відображає діалогове вікно вибору номерів, яке дає змогу користувачеві вибрати число з попередньо визначеного діапазону.")
public void NumberPickerDialog(final int identify, String message, String title, String buttonText,
int defaultValue, int minValue, int maxValue, boolean cancelable) {
TextNumberPickerDialog(identify, message, title, buttonText, defaultValue, minValue, maxValue, cancelable);
}
private void TextNumberPickerDialog(final int identify, String message, String title, String buttonText,
int defaultValue, int minValue, int maxValue, boolean cancelable) {

AlertDialog.Builder alert = new AlertDialog.Builder(this.context);
final NumberPicker numberPicker = new NumberPicker(this.context);
numberPicker.setMaxValue(maxValue);
numberPicker.setMinValue(minValue);
numberPicker.setValue(defaultValue);

alert.setView(numberPicker);
alert.setCancelable(false);
alert.setTitle(title);
alert.setMessage(message);
alert.setPositiveButton(buttonText, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
NumberPickerInput(identify, numberPicker.getValue());
}
});
if (cancelable) {
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
NumberPickerCanceled(identify);
}
});
}
alert.show();
}
@SimpleEvent(description = "This event is fired when the user has pressed the OK button in a number picker dialog.")
public void NumberPickerInput(int identify, int number) {
EventDispatcher.dispatchEvent(this, "NumberPickerInput", identify, number);
}
@SimpleEvent(description = "This event is fired when the user has pressed the cancel button in a number picker dialog.")
public void NumberPickerCanceled(int identify) {
EventDispatcher.dispatchEvent(this, "NumberPickerCanceled", identify);
}

/** ################################################################
*
*/
@SimpleFunction(description = "Відображає діалогове вікно для введення тексту. \n "
+ "logic = 0 Немає типу вмісту. Текст не редагується \n "
+ "logic = 1 звичайн. текст. \n "
+ "logic = 2 тільки цифри. \n "
+ "logic = 3 номер телефону. \n "
+ "logic = 4 дата/час. \n "
+ "logic = 12 Числове поле пароля \n "
+ "logic = 21 адреса електронної пошти. \n "
+ "logic = 24 введення часу. \n "
+ "logic = 81 текстове поле пароля. ")
public void TxtDigitShowDialog(final int identify, String message, String title, String textDefault, String hintText,
int hintColor, int inputColor, String buttonText, String cancelButtonText, boolean cancelable, int logic) {
TextTxtDigitShowDialog( identify, message, title, textDefault, hintText, hintColor, inputColor, buttonText, cancelButtonText, cancelable, logic);
}
private void TextTxtDigitShowDialog(final int identify, String message, String title, String textDefault, String hintText,
int hintColor, int inputColor, String buttonText, String cancelButtonText, boolean cancelable, int logic) {

AlertDialog.Builder alert = new AlertDialog.Builder(this.context);
alert.setTitle(title);
alert.setMessage(message);
alert.setCancelable(false);
final EditText edit = new EditText(this.context);
edit.setText(textDefault);
edit.setHintTextColor(hintColor);
edit.setTextColor(inputColor);
edit.setHint(hintText);
edit.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
edit.setInputType(logic);
alert.setView(edit);

alert.setPositiveButton(buttonText, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
TxtDigitShowInput(identify, edit.getText().toString());
InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(), 0);
}
});
if (cancelable) {
alert.setNegativeButton(cancelButtonText, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
TxtDigitShowCanceled(identify);
InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(), 0);
}
});
}
alert.show();
}
@SimpleEvent(description = "This event is fired when the user has pressed the OK button in a text response dialog.")
public void TxtDigitShowInput(final int identify, String response) {
EventDispatcher.dispatchEvent(this, "TxtDigitShowInput", identify, response);
}
@SimpleEvent(description = "This event is fired when the user has pressed the cancel button in a text response dialog.")
public void TxtDigitShowCanceled(final int identify) {
EventDispatcher.dispatchEvent(this, "TxtDigitShowCanceled", identify);
}
/** ##############################################################
* Приховати програмну клавіатуру після того, як користувач введе текст або скасує введення.
*/
public void HideKeyboard(View view) {
if (view != null) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}

}

Joomla Plugins