Важно (9.07.22)

Если картинки в постах не отображаются, зайдите в блог через прокси. РКН заблокировал поддомены blogger.com на которые загружались картинки.

вторник, 14 октября 2014 г.

Как добавить "резиновый" SplashScreen в XE7

Как известно, в XE7 упростили возможность добавления заставки (SplashScreen) для нашего приложения. В этой заметке я расскажу как добавлять «статичную» и «резиновую» заставки. Данная заметка будет интересна тем, кто не умеет читать по-английски или просто не читает справку по студии. По большей части, эта заметка является вольным переводом справочного материала, с некоторыми добавлениями от меня.

Update (14.10.14): Добавил ссылку на архив с примером.
Update (14.10.14): Добавил дополнение к правилу №3 
Update (16.10.14) Добавил информацию о "резиновой" заставке на весь экран (FullScreen)

понедельник, 6 октября 2014 г.

Android 4.4 и запись на внешнюю карту памяти...

До Android 4.4 (API 19), нам приходилось читать файлы (vold.fstab, mounts), чтобы понять, установлена ли внешняя карта памяти и какой до неё путь.  Теперь у меня есть устройство с Android 4.4.2 и я могу рассказать о некоторых изменениях (с точки зрения пользователя и разработчика).

Сравнивая Android 4.4.2 и Android 4.1.2…
Поменялось меню настроек, меню для разработчика по умолчанию скрыто, появилась поддержка новой виртуальной машины ART (замена для Dalvik) и т.д. А ещё версия 4.4 очень серьёзно оптимизирована и может работать на устройствах с 512 МБ ОЗУ, работает очень шустро.

В данной статье рассмотрим новые правила работы с внешними карточками и файлами.

UPD (21.02.15): Для агрессивных и невнимательных, сообщаю, что статья предназначена для программистов, а не простых пользователей Андроида. Те, кто хочет получить рут или просто поменять память местами на своём устройстве, то вам на 4пда в тему вашего устройства.

четверг, 4 сентября 2014 г.

XE7: Multi-Touch Support

Написал небольшое приложение для проверки Multi-Touch'а. Код самый простой, но всё работает ;) Эта заметка к посту Что нового в XE7 или сравнение с XE6...

Обновление 6.09.14. Написано на Delphi XE7, Android 4.1.2.
Upd (3.10.14). Проверено на Android 4.4.2.

Обновление от 13.11.19. Код выложил через ГитХаб. Удалил пару лишних строк. Проверил на Delphi 10.3.1.








Что нового в XE7 или сравнение с XE6...

Традиционный пост к новой версии среды разработки. Учитывая огромную популярность предыдущего поста про XE6, я просто обязан написать новый. Пост обновляется по мере изучения среды и новых находок. Сравнение происходит с предыдущей версией, в данном случае с Delphi XE6 Update 1.

Обновление 17:54 МСК 5.09.14 Новый компонент MultiView

18.09.14 Java to Pascal Converter

Кратко: Установка, дизайнер форм, компилятор, свойства формы (FullScreen), Multi-Touch Support, Splash Screen, MultiView, баги.

вторник, 2 сентября 2014 г.

RAD Studio XE7, Delphi XE7 и C++Builder XE7

Вышла новая версия среды разработки!

Добавили очень много вкусного, это и сплеш скрин, это и поддержка Java библиотек в Project Manager, Полноэкранный режим на Android KitKat, Обновление содержания TListView с помощью жеста ‘pull-to-refresh’ на iOS и Android, Новая утилита Java2Delphi для генерации нативных bridge-файлов, компонент MultiView и т.д.

Что нового:
  • Дизайнер единого интерфейса (Multi-Device Designer)
  • Поведенческие сервисы FireMonkey
  • Компонент MultiView
  • Корпоративные мобильные сервисы (Enterprise Mobility Services)
  • Cоединение при помощи App Tethering, REST и Bluetooth
  • Библиотека параллельных вычислений (Parallel Computing Library)
  • IDE и инструменты разработки
  • Улучшения в RTL и VCL
  • Улучшения языка Object Pascal
  • Улучшения в БД и FireDAC
  • Улучшения в FireMonkey
Подробности тут: Что нового в RAD Studio XE7
Скачать/купить: RAD Studio XE7

Образы: http://cc.embarcadero.com/Item/29933 или http://cc.embarcadero.com/Item/29934
What's New in Delphi and C++Builder XE7Release Notes for XE7 | Installation Notes for XE7

Update 3.09.14: Bug fix list for RAD Studio XE7

Список новых классов (не всех), 15 лучших (не во всех редакциях):
  1. TMultiView (FMX)
  2. TJumpList (VCL)
  3. TMultiTouchManager (FMX)
  4. TFormSaveState
  5. TParallel
  6. TTask
  7. TBluetoothManager
  8. TBluetoothAdapter
  9. TBluetoothDevice
  10. TNetEncoding
  11. TFDConnectionDefParams
  12. TFDBatchMove
  13. TEMSProvider
  14. TEMSFireDACClient
  15. TEMSResourceAttributes

Кто поставил, скажите, исправили баг http://qc.embarcadero.com/wc/qcmain.aspx?d=121702? Update 3.09.14 - Поговорил с Ярославом, он сказал, что этот баг исправлен в XE7.

Как программно изменять вид окна приложения (скрыть статус бар) в XE6?

В этой заметке вы узнаете, как скрывать/отображать статус бар в Андроиде. В XE7 данная возможность уже реализована. Рассмотрено несколько вариантов, «статический» (рассмотрено два варианта, существует как минимум ещё один) и «динамический» (существует множество вариантов, я рассмотрел один, который кажется мне наиболее правильным).

понедельник, 25 августа 2014 г.

Игра "Одинаковые картинки"

Написал ещё одну маленькую игрушку, позволяющую развивать память и внимание. Цель игры: найти все пары одинаковых картинок. Далее в заметке, я объясню, как и что работает, какие баги нашёл и т.д. Игра работает под Android и Windows.

Написано на Delphi XE6 и проверено на Android 4.1.2.
Upd (3.10.14). Проверено на Delphi XE7 и Android 4.4.2
Upd (18.04.15) Проверено в Delphi XE8 и Android 4.4.2











среда, 13 августа 2014 г.

Приложение для создания файла ресурсов (.RC; .RES)



(Описание от 13.08.14):
Появилась необходимость добавить большое количество картинок в ресурсы приложения, но делать это стандартными средствами не очень удобно. Собственно, написал маленькую программку для создания файла RC и создания bat – файла, который позволяет генерировать RES файл. С данным приложением намного удобнее добавлять сотни мелких картинок в ресурсы.

Что умеет приложение:
  1. Генерировать файл .RC и bat-файл для создания .RES, генерировать .RES файл
  2. Имена в файле ресурсов: оригинальные или сгенерированные автоматически
  3. Создавать новые файлы или же обновлять старые, путём добавления новых записей в конец файла
Как добавить созданный файл:
  • Полученный файл .RES кладём в папку с вашим приложением
  • В .dpr файле, после {$R *.res} пишем {$R test.res}. (test.res замените на имя своего файла)

Текущая версия: 2.0.0 (07.11.2019) (Delphi 10.3.1)
GitHub: https://github.com/AndrewEfimov/GenerateRC
Скачать (exe) с Google Drive: https://drive.google.com/file/d/1RZKHq6wrhfDOD151zXt64OnJH0LNJazs/view?usp=sharing


пятница, 11 июля 2014 г.

Как подключить и использовать свой JAVA-класс

В этой статье вы узнаете, как подключить свой JAVA-класс, как создаётся файл «classes.dex», как пишутся обёртки (об этом уже писал) и как потом использовать подключенный JAVA-код. Советую читать и изучать материал внимательно, чтобы все ваши вопросы решились сами собой.











четверг, 10 июля 2014 г.

Как создавать обёртки для JAVA-кода

В этой статье я постараюсь объяснить, как создавать обёртки, самым доступным языком и с примером. В блоге я уже выкладывал собственную обёртку для работы с Wi-Fi, вот её мы и рассмотрим в качестве примера. Почти всё, что написано ниже, справедливо для любых JAVA-классов. В скором времени я покажу, как работать с собственными JAVA-классами в Delphi.

Update (11.07.14) - Продолжение тут "Как подключить и использовать свой JAVA-класс"

пятница, 4 июля 2014 г.

Получаем список датчиков и информацию о них


В этой заметке узнаем, как можно получить список установленных в устройстве датчиков(Sensors) и полную информацию о них. Сразу скажу, что метод работает только на Android устройствах. Я хотел использовать «кроссплатформенный» модуль «System.Sensors», но оказалось, что он не может решить данную задачу на Android, об этом я ещё немного напишу ниже.
И вопрос к разработчикам Embarcadero.

Написано на Delphi XE6 и Android 4.1.2.
Upd(2.10.14). Проверено на Delphi XE7 и Android 4.4.2





четверг, 19 июня 2014 г.

Вышел Update 1 для RAD Studio XE6, Delphi XE6 and C++Builder XE6

Fix list
Release Notes for XE6 Update 1
Readme - Help Update 1 for Delphi and C++Builder XE6

Скачать Update 1:
RAD Studio XE6
Delphi XE6
C++Builder XE6

upd. Заметил в справке предупреждение об удаление dbExpress из следующих релизов RAD Studio. Рекомендуется использовать FireDAC.

вторник, 10 июня 2014 г.

Получаем список SMS-сообщений

В этой заметке вы узнаете, как получить список СМС-сообщений на устройстве. Важное замечание: Описанный способ работает на версиях Android до 4.3(включительно), начиная с версии 4.4 работа с СМС-сообщениями была упрощена, доступ реализован через контент-провайдер.











воскресенье, 25 мая 2014 г.

Ещё один пример приложения, игра "Пятнашки"

Простейший пример приложения под Android, написанный на Delphi.
Справка: Пятнашки - популярная головоломка, придуманная в 1878 году Ноем Чепмэном. Представляет собой набор одинаковых квадратных костяшек с нанесёнными числами, заключённых в квадратную коробку. Длина стороны коробки в четыре раза больше длины стороны костяшек для набора из 15 элементов (и в три раза больше для набора в 8 элементов), соответственно в коробке остаётся незаполненным одно квадратное поле. Цель игры — перемещая костяшки по коробке, добиться упорядочивания их по номерам, желательно сделав как можно меньше перемещений. (wiki)
Update 29.05.14 Добавил исходный код и описание.
Update 20.05.14 Внесены изменения в исходный код.



понедельник, 12 мая 2014 г.

Intent: Open File или как открыть файл в приложении по умолчанию

Частенько на разных форумах всплывают вопросы об открытии файлов в приложении (ях) по умолчанию. Решил разъяснить немного ситуацию. Про сами Intent рассказывать не буду, т.к. есть очень хорошая статья (Delphi XE5: использование Intent (намерения) в Android), в которой объясняется принцип работы с интентами и имеется парочка примеров, остальные подробности вы всегда можете найти в справке Android API.








понедельник, 28 апреля 2014 г.

Android API: package "android.net.wifi" или обёртка для работы с Wi-Fi


Хотел написать программку для блога, использующую Wi-Fi, точнее анализатор каналов, но обнаружил что в Delphi из коробки, нет готовой обёртки для работы с Wi-Fi. Решил написать эту обёртку сам. Это скорее заметка, чем статья, т.к. просто решил выложить обёртку для общественности.



Внимание! (03.11.2019) Последнюю версию обёртки вы всегда можете взять с моего GitHub'а: https://github.com/AndrewEfimov/Wrappers/blob/master/Androidapi.JNI.net.wifi.pas





воскресенье, 20 апреля 2014 г.

Что нового в Delphi XE6 или некоторые из изменений…

Решил проверить все статьи на совместимость с Delphi XE6, в итоге 5 статей и вот какие изменения (включая баги/ошибки/странное поведение) я заметил. Т.к. статей около 40 штук, то этот пост будет обновляться, по мере продвижения по статьям.

upd (26.04.14). Судя по всему, один из багов не совсем пофиксили...(подробности в конце)
upd (26.04.14). Вышел "Hotfix 1 for RAD Studio, Delphi, C++Builder XE6"

вторник, 15 апреля 2014 г.

RAD Studio XE6, Delphi XE6 и C++Builder XE6

Вышла новая версия среды разработки!

Что нового:
  • Компоненты для взаимодействия приложений (Application Tethering Components)
  • Компоненты для панели задач (Taskbar component)
  • Взаимодействие с сервисами в облаках (BaaS), компоненты для Kinvey и Parse
  • Новые стили VCL
  • Компоненты VCL для работы с датчиками
  • Покупки из приложения и реклама в приложениях
  • Приложения для Google Glass
  • Специальные возможности
  • Качество, производительность и стабильность
  • Разработка приложений на C++ для Android
  • Поддержка пакетов на C++ для 64-разрядной Windows
  • Поиск определений и поиск ссылок
  • Ключевые возможности и работа с базами данных
Где почитать подробнее и на русскомЧто нового в RAD Studio XE6

Где скачать/купить: RAD Studio XE6

Образ "Delphi XE6 and C++Builder XE6 ISO"(5GB): http://cc.embarcadero.com/item/29820

По сравнению с XE5 пофиксили более 500 багов!!! (Даже парочку моих зацепили :)
Какие именно баги пофиксили, можно почитать здесьFix list for RAD Studio XE6, Delphi XE6 and C++Builder XE6

понедельник, 31 марта 2014 г.

Работаем со списком вызовов

Для того чтобы получить доступ к списку вызовов необходимо воспользоваться контент-провайдером и получить доступ к таблице «CallLog.Calls». Код написан для API 10, т.е. будет работать на версиях Android от 2.3.3 и выше.

Upd (20.04.14). Проверил код на Delphi XE6 и добавил информацию о необходимых изменениях.

воскресенье, 30 марта 2014 г.

Работаем со списком контактов, #2

Эта статья является продолжением первой части (Работаем со списком контактов, #1). В этой статье вы узнаете, как определять тип контакта и как определить/вывести тип номера в виде строки.

Upd (20.04.14). Проверил код на Delphi XE6 и добавил информацию о необходимых изменениях.

суббота, 29 марта 2014 г.

Работаем со списком контактов, #1

Мне уже не раз писали, и спрашивали «как же работать с контактами на Android?». Я отправлял людей читать АПИ Андроида. Недавно получив ещё один подобный вопрос (Спасибо «helper999999» :), я всё-таки решил написать статью на эту тему и ответить на данный вопрос. Возможно, позже появятся статьи о работе с СМС и звонками.

Upd (20.04.14). Проверил код на Delphi XE6 и добавил информацию о необходимых изменениях.

пятница, 14 марта 2014 г.

Пишем простейшую игру (головоломку) для детей

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

Upd (20.04.14). Проверил код на Delphi XE6 и добавил исходники для новой версии IDE.

пятница, 7 марта 2014 г.

Добавляем Splash Screen в приложение для Android

Splash Screen используется для того чтобы не видеть черный экран при запуске приложения. Ниже вы узнаете, как легко создать такую «заставку». Примечание: это один из возможных вариантов создания Splash Screen. За тему для этой заметки благодарю Балашова Валерия.

Upd (07.03.14). Дополнение из комментариев.
Update (17.03.14). Дополнение по выравниванию картинки
Update (18.03.14 0:35). Изменяем цвет фона под прозрачной картинкой
Update (25.11.14). В XE7 встроена возможность добавления заставки. Читайте справку и мою статью Как добавить "резиновый" SplashScreen в XE7

вторник, 4 марта 2014 г.

Управляем настройками Android из приложения

На платформе Андроид все общесистемные параметры, которые доступны через настройки, также доступны для вашего приложения. Вам просто нужно поставить галочку напротив «WRITE_SETTINGS» в «Uses Permission». Вот простой пример Delphi XE5, позволяющий изменить тайм-аут экрана. 

четверг, 27 февраля 2014 г.

Описание свойств окна: Project > Options > Application > Version Info

В этой заметке вы найдёте описание всех свойств окна настроек: Project > Options > Application > Version Info.
Используйте это диалоговое окно, чтобы указать информацию о версии для вашего проекта. В случае с Android эти свойства используются в файле AndroidManifest.xml, который в свою очередь используется самим Android и магазинами приложений (напр.: Google Play).

Обновление от 18.11.19. (Используется Delphi 10.3.1)



вторник, 25 февраля 2014 г.

Отключаем затухание и блокировку дисплея

Иногда в приложениях необходимо запретить автоблокировку экрана. Существует как минимум три способа (на JAVA, с использованием Android API) управления затуханием/блокировкой дисплея. Пока мне удалось опробовать только 2 способа (остальные пока не знаю, как реализовать), но и их в принципе уже достаточно.

воскресенье, 16 февраля 2014 г.

Обновляем файл базы данных без перезапуска приложения

Я уже писал об этом тут Несколько особенностей и вопросы по ним, в комментариях предложили несколько вариантов, которые можно использовать, чтобы переносить изменённые данные из старой базы в новую. В моём сообщении речь шла об обновлении файла базы данных без внесения изменений, нормального решения на тот момент я так и не нашёл. Оставалось только удалять файл базы и перезапускать приложение, чтобы подтянулся новый файл. Но нет таких пользователей, которым нравилось бы каждый раз перезапускать приложение, поэтому необходимо нормальное решение.

Upd (21.04.14). Проверил код на Delphi XE6 и добавил информацию о необходимых изменениях.

суббота, 15 февраля 2014 г.

Получаем список доступных устройств хранения информации

Как и обещал в комментариях к заметке «Deployment Manager или куда ещё можно задеплоить файлы», покопался ещё немного в файловой системе (а точнее в Иерархии каталогов). Основой для этой статьи стал вопрос от Дмитрия Кузьменко, очень надеюсь, что смог ответить на него в необходимом объёме. Немного поговорим об OC Android, производителях устройств работающих под управлением этой операционки, а также я покажу несколько вариантов получения списка доступных устройств хранения информации.

Продолжение для Android 4.4.* тут: Android 4.4 и запись на внешнюю карту памяти...

Upd (17.02.14). На основе комментариев внесены правки в приложения.
Upd2 (17.02.14). Обнаружено ложное срабатывание 3-го варианта, особенность пофиксил. Немного улучшил поиск.

Upd (30.03.14). Третий способ работает на версиях Android ниже 4.3. Для версий выше 4.3 код не напишу, т.к. не имею устройств с такой версией Android для анализа новой структуры.
Upd (21.04.14). Проверил код на Delphi XE6

Upd3 (15.07.14). Обновление исходного кода, обнаружена не правильная работа (ошибка AV) на некоторых устройствах

суббота, 8 февраля 2014 г.

Deployment Manager или куда ещё можно задеплоить файлы

Решил посмотреть, куда ещё можно задеплоить файлы и что происходит при обновлении приложения вручную, не из гугл маркета. Почему-то во всех статьях/заметках говорят только про путь ".\assets\internal\", исправляем ситуацию (смотрите скриншот).

Из этой заметки вы узнаете:
Куда можно задеплоить или программно сохранить файлы, так чтобы их можно было вытащить любым файловым менеджером и без прав супер пользователя. В общем, небольшой разбор полётов, основываясь на официальной справке и моих экспериментах (на SGS2 и HTC Rhyme).

четверг, 6 февраля 2014 г.

Пишем свой файловый менеджер для Android, #2


В предыдущей статье (#1) я обещал, что продолжу разработку файлового менеджера и добавлю новый функционал:
1) Создание файлов и папок
2) Копирование/перемещение файлов и папок
3) Более дружелюбный интерфейс приложения


Видео в конце поста.
Upd (20.04.14). Проверил код на Delphi XE6 и добавил исходники для новой версии IDE.






понедельник, 3 февраля 2014 г.

Создаём кастомное окно для вывода сообщений


Если вам не нравится, как выглядит стандартный MessageBox или просто захотелось немного оригинальности в своём приложение, то можно создать кастомный MessageBox. В этой заметке я расскажу, как это сделать.

UPD. Добавляем плавность и тень, используем TFloatAnimation и TShadowEffect

Upd (21.04.14). Проверено на Delphi XE6

четверг, 30 января 2014 г.

Пишем свой файловый менеджер для Android, #1

Решил попробовать написать простенький файловый менеджер, используя при этом модуль «System.IOUtils», чтобы умел перемещаться по папкам, открывать/удалять файлы. (Как вы могли заметить, в заголовке есть номер части, это значит, что будут ещё статьи, где я буду "допиливать" это приложение)
Описывать весь модуль «System.IOUtils» я не буду, т.к. в интернете и официальной справке вы можете найти достаточно подробное описание этого модуля и его классов, методов.
И так, поехали.

Статья №2 (Пишем свой файловый менеджер для Android, #2)

Upd (21.04.14). Проверил код на Delphi XE6 и добавил исходники для новой версии IDE.

пятница, 24 января 2014 г.

Android KitKat стиль для XE5

В Android 4.4 внесены некоторые изменения в цвета для кнопок и списков. Ниже приведен скриншот ключевых отличий. В то время как вы могли бы просто сделать эти изменения через Bitmap Style Designer (Tools->Bitmap Style Designer), мы предоставляем обновленные версии светлого и темного стилей для XE5 для KitKat.

среда, 22 января 2014 г.

Управление виртуальной клавиатурой устройства

При разработке Android приложения иногда возникает необходимость отслеживать и изменять состояние клавиатуры устройства. Для этого был добавлен сервис IFMXVirtualKeyboardService.

Внимание! Старая версия заметки более не актуальна, т.к. была написана для Delphi XE5/XE6. Это новая версия заметки, актуальна для Delphi 10.3.* и выше. Если вы всё ещё используете версию Delphi ниже 10.3, то рекомендую обновиться на последнюю версию!

Обновление от 16.11.19.


вторник, 21 января 2014 г.

Предварительный просмотр мобильного приложения на OC Windows


В Delphi XE5 Update 2 добавили возможность предварительного просмотра приложения на Windows. Эта возможность реализована в виде отдельного мобильного стиля «mobilepreviewstyle», который имитирует мобильный внешний вид.




воскресенье, 12 января 2014 г.

Используем вибрацию на Android устройствах

Внимание! Старая версия заметки более не актуальна, т.к. была написана для Delphi XE5/XE6. Это новая версия заметки, тестировалась на Delphi 10.3.3. Если вы всё ещё используете версию Delphi ниже 10.3, то рекомендую обновиться на последнюю версию!

Обновление от 01.12.19. App tested on Delphi 10.3.3

Для использования функций вибрации, необходимо воспользоваться Android API.
Android API изменялось от версии к версии и некоторые изменения коснулись функций вибрации. Я не буду углубляться в версии и т.п. Просто предлагаю вашему вниманию свой класс (TVibratorHelper) и обёртку (Androidapi.JNI.os.Vibration) для использования функций вибрации.

суббота, 4 января 2014 г.

Определяем разрешение и ориентацию экрана/формы

Для решения задачи с определением разрешения воспользуемся JNI (Android API: http://developer.android.com/reference/android/util/DisplayMetrics.html).
На самом деле объяснять тут не чего особо, поэтому я просто приведу код проекта. Не забываем подключить в uses «FMX.Helpers.Android, Androidapi.JNI.Util;». Код, приведённый ниже расписан, чтобы всё было понятно.
Кстати, пример определения ориентации экрана и отображения определённой формы есть в демо проектах Delphi XE5.

Upd (21.04.14). Проверено на Delphi XE6

пятница, 3 января 2014 г.

Получаем информацию об устройстве (Device Information)



Внимание! Старая версия заметки более не актуальна, т.к. была написана для Delphi XE5/XE6. Это новая версия заметки, актуальна для Delphi 10.3.*. Если вы всё ещё используете версию Delphi ниже 10.3, то рекомендую перейти на новую версию!

Обновление от 12.11.19.

В этой заметке (как и в старой) рассмотрим пример работы с Android API, а конкретно получим доступную информацию об устройстве. Эту информацию можно увидеть в настройках вашего устройства, в меню «Об устройстве/телефоне/планшете».

Для получения такой информации в Android API предусмотрены специальные классы.

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



Список классов, которые использовались в примере:
В примере, я также показал, как можно получить Device Name (Один из вопросов, который периодически появляется где-нибудь).