Показ дописів із міткою Android. Показати всі дописи
Показ дописів із міткою Android. Показати всі дописи

суботу, 9 травня 2020 р.

Android бібліотеки для побудови графіків (діаграм)

Задались питанням «Як побудувати графік (діаграму) у Android програмі?». Для цього існує вже ряд розроблених бібліотек для Android Java розробників. З тих, що я знайшов, більш менш пристойними є: SciChart, AndroidCharts, AChartEngine, AndroidPlot, GraphView, MPAndroidChart. Останні дві є найбільш популярними. Існують також дуже простенькі невеличкі бібліотеки, які зосереджуються на малюванні одного якогось графіку, найчастіше лінійного.

SciChart – платна багатоплатформна бібліотека для WPF, iOS, Android, Xamarin. Розробники стверджують, що вони зосереджуються на швидкості і високопродуктивності їхньої бібліотеки. Дозволяє будувати доволі складні динамічні графіки. Наявний непоганий посібник (Tutorial) для Android розробників. Проте дана бібліотека є платна і коштує від 850 до 3000 доларів США на одного розробника в рік.
SciChart library, example, Android Graph, Plot
Приклад програми з використанням SciChart

четвер, 7 травня 2020 р.

FileChooser (FilePicker) in Android Program

Якщо необхідно реалізувати вибір файлів у вашій Android програмі, то додати до своєї програми так званий FileChooser або ж його ще називають FilePicker можна декількома способами. Можна використати стандартні засоби API Android, а можна скористатися сторонніми бібліотеками, яких зараз є доволі багато.

Передусім можна використати стандартний Intent.ACTION_GET_CONTENT. Для цього достатньо додати в обробник події натиснення кнопки наступні рядки:
Intent myFileIntent=new Intent(Intent.ACTION_GET_CONTENT);
myFileIntent.setType("*/*");
startActivityForResult(myFileIntent,10);
Також необхідно замістити (@Override) метод OnActivityResult і додати в ньому:
if (requestCode == 10 && resultCode == RESULT_OK) {
    String path=data.getData().getPath();
    textView.setText(path);
}
В результаті після натиснення кнопки з’явиться стандартна активність, яка дозволяє вибрати звідки вибирати файли і навіть, які засоби встановлені у системі використати. Наявні елементи можуть відрізнятися в залежності від конфігурації системи Android.

На моєму мобільному це виглядає так:
ACTION_GET_CONTENT, FileChooser Android
Інший варіант реалізувати вибір файлів є підключення сторонньої бібліотеки до Андроїда. Я опробував дві бібліотеки.

Material FilePicker ('com.nbsp:library:1.8') Детальніше тут.

Як її застосовувати також наведено на цьому відео:

Дана бібліотека дозволяє створити простий FileChooser в Android. Проте особисто мені сподобалась інша бібліотека, яка має більше можливостей щодо налаштувань, більше функцій та кращий зовнішній вигляд.

Це Android-FileBrowser-FilePicker ('com.adityak:browsemyfiles:1.9'). Детальніше тут.

Якщо необхідний FileChooser/FilePicker, то додаємо в gradle:
implementation 'com.adityak:browsemyfiles:1.9'
В обробник події кнопки для реалізації множинного вибору:
Intent i2 = new Intent(getApplicationContext(), FileChooser.class);
i2.putExtra(Constants.SELECTION_MODE, Constants.SELECTION_MODES.MULTIPLE_SELECTION.ordinal());
startActivityForResult(i2, PICK_FILE_REQUEST);
А у заміщеному (@Override) методі OnActivityResult додаємо:
if (requestCode == PICK_FILE_REQUEST && data!=null) {
      if (resultCode == RESULT_OK) {
          ArrayList selectedFiles  = data.getParcelableArrayListExtra(Constants.SELECTED_ITEMS);
      }
}
Результат тестування усіх трьох способі наведено на наступному відео:

Початковий код розміщено тут: https://github.com/volodimirg/TestFileChooser. Дивіться код MainActivity. У Manifest було додано лише дозвіл доступу до зовнішнього сховища даних.

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

Дивіться також:

вівторок, 17 липня 2018 р.

Дозволи доступу в Android 6 та вище (Android permissions)

В андроїді 6 було переглянуто концепцію надання доступу. Раніше розробник у файлі manifest.xml вказував дозволи на доступ до компонентів мобільного таким чином:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.CAMERA"/>

Цього було досить в попередніх версіях андроїда. Користувач при встановленні програми підтверджував ці доступи і програма отримувала доступ до необхідних засобів. Такий підхід призвів до проблеми пов’язаної із тим, що програми-шпигуни могли без відома користувачів отримувати від них інформацію і передавати стороннім особам. Тож в андроїд 6 та вище необхідно додатково писати код, який би запитував користувача про надання доступу. Зокрема необхідно запитувати дозвіл на доступ до камери, списку контактів, місця розташування тощо. При чому дозволи діляться на групи, якщо ви запитали доступ на читання зовнішньої сховища даних, то вам автоматично дається дозвіл на запис до цього сховища. Крім того самі дозволи діляться на нормальні та небезпечні. Нормальні не несуть небезпеки конфіденційності користувачу.

Для отримання дозволу, які класифіковані як небезпечні, необхідно зробити декілька кроків:
1) Перевірити чи раніше не був даний такий доступ
2) Якщо доступ не надано, то запитати користувача
3) Перевизначити метод onRequestPermissionsResult(), який би перевіряв чи користувач прийняв запит чи відхилив і в залежності від того здійснити подальші дії.

Такі дії необхідно виконувати, якщо targetSdkVersion 23 або вище. Якщо цільова версія нижче 23, то ці програми працюють як раніше на новіших версіях андроїда. Щоправда, гугл плей зараз настійливо рекомендує націлювати програми на останні версії андроїда.

При написанні програми в маніфесті, як і раніше необхідно вказувати відповідні рядки з uses-permission.

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


суботу, 3 лютого 2018 р.

ListView з власним адаптером (Android)

Стандартні адаптери для ListView реалізовані для простих стандартних списків, які складаються або з простих текстових полів, або з текстових полів та якогось перемикача (прапорця або радіокнопки). Якщо необхідно реалізувати, щось інше, то необхідно реалізувати власний адаптер, який би відображав пункти списку в потрібному вигляді.

Завдання
Реалізуймо список, який би відображав телефонну книгу і кожен пункт включав би фото, ім’я та номер телефону. Після натиснення на пункті списку виводитиметься відповідне повідомлення.

Підготовка
Спочатку створюємо проект з пустою активністю ListActivity.java 
У папочку res/drawable необхідно закинути зображення, які будуть використовуватися в якості фото.

Для того, щоб програма запрацювала нам знадобиться чотири файли:
ListActivity.java – головна активність програми
Person.java – клас, що містить інформацію про особу (фото, ім’я та телефон)
activity_list.xml – макет активності ListActivity.java (містить віджети TextView та ListView)
item_list.xml – макет пункту списку, в якому вказується як відображатиметься фото і текст, відображенням його на екран займатиметься адаптер, що буде внутрішнім класом у ListActivity.java.

суботу, 27 січня 2018 р.

Простий ListView (Android)

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

Задача
Вивисте список пристроїв. При натисненні певного пункту виводитиметься відповідне повідомлення.
1. Створюємо нову активність ListActivity

неділю, 19 лютого 2017 р.

Activity (Android)

В Android основні елементи програми - активності (Activity) та макети (Layout).

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

Макет – це файл опису графічного інтерфейсу користувача в форматі XML.
 
Рекомендують називати файли активності використовуючи слово Activity, наприклад, HelloActivity, StartActivity і т.п. Макети називаються з малої букви, із словами у зворотньому порядку, з використанням символу підкреслення між словами. При використанні Android Studio макети автоматично найменуються, наприклад, activity_hello, activity_start.

Завдання:
Розробити програму, яка б складалася з однієї активності та містила кнопку(Button) і текстове поле(TextView). При натисненні кнопки напис текстового поля повинен змінитися на інший.

Рис. 1 - Результати виконання програми

Створення заготовки

Щоб створити заготовку програми достатньо скористатися готовими шаблонами в Android Studio. Вибираємо File.>new->New Project і вибираємо серед запропонованих шаблонів Blank Activity. Називаємо наш проект FirstApp, і при бажанні вводимо назву пакету і тиснемо фініш. В результаті буде створений проект, який просто буде виводити на екран «Hello, World!!!». Нас в даному проекті цікавить три файли.

вівторок, 27 вересня 2016 р.

Android Studio: Error:The number of method references in a .dex file cannot exceed 64K.

Error:The number of method references in a .dex file cannot exceed 64K.

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

Способів вирішення три:

1. Почистити код, позбутися лишніх інструкцій та відповідно лишніх імпортів

2. Прописати у скрипті gradle

// Enabling multidex support.
multiDexEnabled true

четвер, 5 лютого 2015 р.

Андроїд - не лінукс і джава - не джава


Короткі замітки і коментарі по 3- му розділу книги "Learning Android", 2-nd Edition by Marko Gargenta and Masumi Nakamura (2014). Думаю написати їх по кожному розділу (якщо вистачить духу). Можливо, колись такі замітки переростуть у щось більше.

Android - не Linux, проте є надбудовою над kernel. Так пишуть автори, хоча б я сказав би, що Android - це Linux, який спочатку обрізали, а потім доповнили новими можливостями :) Зокрема, у андроїда відсутні:

понеділок, 2 лютого 2015 р.

Конект до vmware з іншого комп’ютера

Тож: є два комп’ютери (ноутбук та нетбук). На нетбуці у віндовз встановлено віртуальну машина  VMware (Android). При чому з’єднання іде напряму з одного комп’ютера до іншого по Ethernet кабелю без посередництва якогось комутатора. Ідея в тому, щоб використовувати дану віртуальну машину для зневадження/наладгодження програм.  Тобто, на ноутбуці іде робота з eclipse, а перевірка роботи програм іде не на емуляторі (який тормозить комп’ютер), а на віртуальній машині. З віртуальною машиною як на мене легше працювати, але вона також нагружає комп'ютер, коли працювє разом з eclipse. Непогано б перевіряти програму на іншому комп'ютері. Для цього vmware було встановлено на нетбуці.

Пред початком, я на одному і другому комп’ютері (windows XP) налаштував з’єднання (IP1: 192.168.0.20, IP2:192.168.0.21(нетбук), Mask:255.255.255.0). Тож, міні-мережа була налаштована.

Теоретично мало б бути так:

вівторок, 23 грудня 2014 р.

Eclipse, Android, VMware та VirtualBox

Якщо віртуальні пристрої, які створюються за допомогою Android Virtual Device чимось не підходять для роботи, то один із способів зробити емулятор для написання програм під Android є створення віртуальної машини у VMware або ж VirtualBox..

Усе робиться доволі просто.
1. Звантажуємо образ диску з Android (наприклад, звідси (http://www.android-x86.org/download))
2. Далі встановлюємо або VMware або VirtualBox. Virtual Box безкоштовний і його можна звантажити з офіційних сайтів (наприклад, звідси (https://www.virtualbox.org/wiki/Downloads))
3. Створюємо віртуальну машину і встановлюємо на ній Android. На youtube є маса відео по встановленню, тож я не буду у прінтскрінах все це показувати. Можна скористатися хоча б цим відео: