-
Постов
2 124 -
Зарегистрирован
-
Посещение
-
Победитель дней
390
Активность репутации
-
Brovin Yaroslav отреагировална Kitty в Запуск видео по расписанию в плеере на Андроиде
Большое спасибо за развернутые ответы!
Да, именно так и планируется. Закуплены однотипные устройства: http://rozetka.com.ua/iconbit_movie_3d_iptv/p387929/ и сугубо для этих целей - играть по одному видео по расписанию. Сейчас вместо программы, в назначенное время ходит человек и запускает нужные видео.
Конкретно на этих устройствах еще не тестировала программу т.к. пока все в разработке. На моем же PIPO M7 Андроид 4.4.2 похоже, что работает. Обидно будет, что возможно на этих устройствах программа не заработает как надо, но плюс по любому есть - изучение FM.
-
Brovin Yaroslav получил реакцию от Andrey Efimov в Запуск видео по расписанию в плеере на Андроиде
Если такая опция и есть, то она скорее всего носит рекомендательный характер для системы, а не обязательный. Например, есть опция largeHeap в манифесте, которая говорит о том, что нужно выделять приложению больше памяти largeHeap. Но официально указано, что нет гарантии ее выполнения. Что в общем и ожидаемо. Так как если на устройстве нет свободной памяти, то больше ее брать не от куда.
Тоже касается и этой опции. Так как - это будет потенциальный риск написания вредоносного приложения или сервиса, который будет занимать все ресурсы и не давать ничего загрузить.
-
Brovin Yaroslav отреагировална Nix0N в [Отклонение] Программа не отвечает после вращения устройства
Данные "косяки" присутствовали в RAD Studio XE5. В XE6 полёт нормальный. Android 4.1
Предполагаю, что в Вашем случае проблема кроется в перерисовке стиля. Попробуйте realigncontent, update и т.д.
-
Brovin Yaroslav отреагировална Nix0N в Запуск видео по расписанию в плеере на Андроиде
Да, необходимо завершить предыдущую активити с MXPlayer
Используйте JNI и переделайте под Ваши нужды:
ActivityManager.killBackgroundProcesses(String packageName) Где packageName - название пакета MXPlayer
Если видео запускается в том же экземпляре программы MXPlayer, то этого делать не нужно.
Можете подсмотреть здесь
-
Brovin Yaroslav отреагировална Andrey Efimov в Горизонтальная линия в целых координатах рисуется двойной
Посмотрите вот эту статью: http://roman.yankovsky.me/?p=1018
upd от "konung": Русская версия статьи: http://roman.yankovsky.me/?p=996
-
Brovin Yaroslav отреагировална konung в [Руководство] Отладка программы на Android устройстве через Wi-Fi
Чуток добавлю (тоже интересовался), но сразу оговорюсь - ещё не пробовал:
От тут про отладку по wifi несколько ссылок (android вообще, не к BDS привязано):
http://vadimrm.livejournal.com/179949.html
И в частности комрад дает ссылки на ADB коим не нужен root:
https://play.google.com/store/apps/details?id=com.sherdle.adbwireless
http://sherdle.com/adb/
-
Brovin Yaroslav отреагировална konung в [Руководство] Отладка программы на Android устройстве через Wi-Fi
2 Nix0N
Эт я не спорю. Просто хотел дать ссыль на вариант без root-а. Но подчеркнул, что не проверял это всё на BDS.
-
Brovin Yaroslav отреагировална Nix0N в [Руководство] Отладка программы на Android устройстве через Wi-Fi
Если вас, как и меня, не устраивает скорость работы эмулятора Android и в вашей системе нет свободных USB чтобы подключить устройство для отладки, то эта инструкция для вас. Внимание ! Перед дальнейшим выполнением необходимо получить root на устройстве ! Как это сделать описано здесь
*статья написана на основе RAD Studio XE6 с путями по умолчанию
**подразумевается что драйвера на устройство установлены, оно определяется в системе и успешно работает по USB кабелю с IDE
Итак, начнем:
1. Устанавливаем на устройство ADB over WIFI Widget. Вообще подобных программ множество, но я выбрал именно эту за её удобство. Исполнена в виде виджета, по клику активируется или деактивируется.
2. Перезагружаем устройство
3. Идём в раздел "Виджеты" и выносим виджет на рабочий стол (настройки виджета не меняем)
4. Включаем Wi-Fi на устройстве (если еще не включен) и кликаем по виджету. Если на виджете появилась информация в виде "IP адрес : порт" и цвет виджета из серого сменился на зеленый - программа успешно запущена и можно переходить ка настройкам на ПК.
5. Теперь необходимо подключить ADB к устройству. Для этого идем в каталог c:\Users\Public\Documents\Embarcadero\Studio\14.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\platform-tools\ и создадим там BAT-файл следующего содержания:
adb connect 192.168.1.3:8000 (IP адрес и порт, которые изображены на виджете вашего устройства) pause (чтобы окно CMD не закрывалось и можно было отследить результат работы ADB) 6. Запускаем BAT-файл
В случае успешного выполнения ADB подключится к устройству. Всё, можно запускать IDE.
-
Brovin Yaroslav получил реакцию от Andrey Efimov в Как получить объект стиля?
Еще можно через StylesData. Но в этом случае вначале идет название (StyleName) внутреннего объекта стиля, а потом через точку название свойства.
Вы пытались задать, но не правильно указали название элемента. Если итем лист бокса принимает стиль "listboxitemlabel", то чтобы добраться например до внутреннего объекта icon. Нужно написать так:
ListBoxItem.StylesData['icon.width'].asInteger -
Brovin Yaroslav отреагировална konung в Как правильно запустить видео в плеере из своей программы?
2 Kitty
Не уверен что так можно делать а Android. Тут, как и многое другое, надо юзать через Intent-ы (намерения).
Рыться надо по сему поводу на сайтах/форумах по программированию на Android. Ибо в мануалах и демках BDS это скудно освещено.
-
Brovin Yaroslav отреагировална Andrey Efimov в Как получить объект стиля?
Вроде как можно искать объект стиля, например иконку в ListBoxItem:
var StyleObject: TFmxObject; StyleIcon: TControl; begin // Ищем объект стиля - картинка. Лучше закешировать один раз, избежав постоянный поиск картинки StyleObject := Item.FindStyleResource('icon'); if (StyleObject <> nil) and (StyleObject is TControl) then begin StyleIcon := TControl(StyleObject); // и дальше работаем как с обычным контролом end; end; попробуйте, может поможет.
-
Brovin Yaroslav получил реакцию от Nix0N в Как изменить стиль по умолчанию для андроида?
Если задача стоит просто изменить стандартный платформенный стиль. То, чтобы измененный стиль не занимал дополнительное место в приложении, нужно им заменить стандартный.
Я писал давно статью на эту тему тут: FMX 2.0. Глобальная замена платформенного стиля по умолчанию без TStyleBook
Идея простая, заменить ресурс стандартного стиля на ваш.
Дополнение для названия ресурсов в приложении. Вначале указано название ресурса в приложении, затем платформа
iphonestyle - iPhone iOS < 7.0 ipadstyle - iPad iOS < 7.0 iphonepadstyle_Modern - iOS >= 7.0 androidstyle - Android win7style - WIndows 7 win8style - Windows 8 lionstyle - OSX Если же вы создаете новые стили (кастомный стиль итемов и тд), то их нужно грузить обычным способом через стиль бук. И поскольку они новые, ваши, то они включаются в ресурсы формы и увеличивают размер приложения.
-
Brovin Yaroslav получил реакцию от Nix0N в Обновление списка ListBox, как в приложении ВКонтакте
Мне кажется, что через обычный MouseMove, MouseDown, MouseUp будет проще. Через них как раз можно определить высоту сдвига.
В начале сдвига, на основании ScrollViewPos отображаем стрелку с надписью. В MouseMove следим за величиной сдвига При достижении требуемой величины сдвига, меняем надпись и направление стрелки. При отпускании скрываем надпись, стрелку и отображаем TAniIndicator. -
Brovin Yaroslav отреагировална Nix0N в Обновление списка ListBox, как в приложении ВКонтакте
Давайте поразмыслим как такого эффекта можно добиться для ListBox. Первое что приходит в голову это:
Добавляем Item в ListBox (обязательно первым) и выставляем его свойство Height = 0 В тексте Item'a введем что-то похожее на "Тяните для обновления..." Добавляем GestureManager и в жестах отмечаем Down Необходимо отловить тап по экрану и если движение идёт сверху-вниз соответственно увеличивать Height нашего первого Item'a Как только высота item'a достигла определенного значения, сменим текст на "Отпустите для обновления" и считаем что жест успешно выполнен, иначе перекрываем обработчик жестов По окончании жеста вызывается обработчик менеджера жестов и т.д.... Каким образом реализовать 4-й и 5-й пункт ?
-
-
Brovin Yaroslav получил реакцию от brunnengi в Куда делся TJSONObject в XE6?
TJSONObject был перемещен в другое место из Data.DBXJSON в System.JSON. Подробнее тут: What's New in Delphi and C++Builder XE6 Работать так же, как и раньше. Просто изменить название подключаемого модуля на System.JSON. -
Brovin Yaroslav отреагировална Andrey Efimov в Как получить путь к файлу в Андроид приложении?
Прочитайте эту тему на форуме: Включение своих файлов в приложение
Для сохранения логов, отладочной информации можно использовать открытые для доступа папки вашего приложения, которые при удалении приложения также удаляются и не оставляют мусора, подробности вы можете найти в этой статье: Deployment Manager или куда ещё можно задеплоить файлы
А здесь (в комментариях), я объясняю, почему не стоит создавать папки в корне карты памяти: Обновляем файл базы данных без перезапуска приложения
-
Brovin Yaroslav отреагировална konung в Как получить путь к файлу в Андроид приложении?
Я так понимаю - вам надо получить путь к каталогу где "лежит" само приложение для сохранение конфигов и т.п.
Для эти целей воспользуйтесь GetHomePath.
Однако учтите, что доступ к данному каталогу (если телефоне не root-ован) имеет только сама ваша программа (ну естественно и ось и т.п.). Т.е. зайти туда (без рута) вы не сможете.
Для хранения настроек программы, ресурсов - это вполне удобно. Однако для логов, или выгрузки результатов работы - лучше определить для себя иной каталог.
-
Brovin Yaroslav получил реакцию от Kitty в FGX. Индикация хода выполнения длительных операций, виртуальная клавиатура и ActionSheet
Добавлена новая версия расширения компонентов FireMonkey. Новый пакет поддерживается только для XE6.
Список возможностей:
Progress Dialog - Добавлены события OnShow, OnHide. Progress Dialog - Исправлены утечки памяти на Андроид и IOS TfgProgressDialog - Добавлен метод для немедленного сброса прогресса без анимации ResetProgress. TfgActionSheet - Добавлена поддержка действий TAction. Так же теперь можно указать только по одной кнопке деструктивного и отменного типа. TfgColorsPanel - Добавлен новый контрол для выбора цветов из готовых пресетов. Поддерживает следующие наборы цветов: WebSafe, X11. Позволяет указывать свои наборы цветов. TfgGradientEdit - Добавлен новый контрол для задания градиента. TfgLinkedLabel - Добавлен новый контрол - метка со ссылкой. Открывает указанную ссылку в стандартном браузере. Поддерживает все платформы. Добавлены и улучшены примеры каждых контролов. Добавлен набор хелперов И другие улучшения на уровне кода. TfgActivityDialog
Работа под iOS:
Работа под Андроид (Выше, чем GingerBread 2.3):
Работа под Андроид (GingerBread 2.3):
TfgProgressDialog
Работа под iOS:
Работа под Андроид (Выше, чем GingerBread 2.3):
Работа под Андроид (GingerBread 2.3):
TfgActionSheet
TfgColorsPanel
TfgLinkedLabel
-
Brovin Yaroslav получил реакцию от Владимир в [TTabControl] Красивое 3D переключение вкладок в TabControl
Можно сделать так:
Делаем поворот TTabControl на от 0 до 90 градусов, чтобы он повернулся к пользователю ребром. По окончании первой анимации меняем активную вкладку в TTabControl. Делаем поворот TTabControl еще на 90 градусов от 270 до 360. В итоге TTabControl поворачивается к нам уже новой вкладкой. Видео эффекта в действии:
Проект: TTabControl_3DRotationDemo.zip
-
Brovin Yaroslav получил реакцию от CrazyUser в Нестандартные шрифты, какие изменения нужно сделать, что сделать переход с XE5 на XE6?
Так же обратите внимание на страницу "What's New in Delphi and C++Builder XE6", на которой полностью указаны все изменения от XE5 до XE6.
-
Brovin Yaroslav получил реакцию от CrazyUser в Как использовать Toast уведомления?
На будущее, "Одна тема - один вопрос". Это облегчает поиск решения своей задачи, когда заголовок содержит один вопрос и ответы на него. А не одну тему внутри которой, сидит несколько вопросов.
Toast уведомления
Дополнительная информация о том, что такое Toast можно прочитать на официальном сайте Андроида: Toasts
Диалоговое окно ввода
Диалоговое окно с эдитом во все время в Delphi вызывалось одной из двух процедур. Для FireMonkey они находятся FMX.Dialogs, в VCL - VCL.Dialogs:
function InputBox(const ACaption, APrompt, ADefault: string): string; function InputQuery(const ACaption: string; const APrompts: array of string; var AValues: array of string; CloseQueryFunc: TInputCloseQueryFunc = nil): Boolean; function InputQuery(const ACaption: string; const APrompts: array of string; var AValues: array of string; CloseQueryEvent: TInputCloseQueryEvent; Context: TObject = nil): Boolean; function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean; InputQuery - отображает модальное диалоговое окно с поле ввода для ввода текстового значения
InputBox - Отображает модальное диалоговое окно с несколькими полями ввода для множественного ввода значений.
-
Brovin Yaroslav получил реакцию от Andrey Efimov в Нестандартные шрифты, какие изменения нужно сделать, что сделать переход с XE5 на XE6?
Так же обратите внимание на страницу "What's New in Delphi and C++Builder XE6", на которой полностью указаны все изменения от XE5 до XE6.
-
Brovin Yaroslav отреагировална konung в Что нужно использовать вместо ShowMessage на Андроиде?
Сами пишем - сами отвечаем
Workaround
Решение: On Android, Use TPopup Instead of ShowMessage
Хотя в QC висит всё же как не решенное http://qc.embarcadero.com/wc/qcmain.aspx?d=119285
Благодарю за ответ(ы)
-
Brovin Yaroslav отреагировална konung в Нестандартные шрифты, какие изменения нужно сделать, что сделать переход с XE5 на XE6?
В XE6 произошли следующие изменения:
StringToJString вынесено в Androidapi.Helpers. TPixelFormat теперь в FMX.Types и выглядит так: TPixelFormat = (None, RGB, RGBA, BGR, BGRA, RGBA16, BGR_565, BGRA4, BGR4, BGR5_A1, BGR5, BGR10_A2, RGB10_A2, L, LA, LA4, L16, A, R16F, RG16F, RGBA16F, R32F, RG32F, RGBA32F); хотя в XE5 сидел в FMX.PixelFormats и имел иной вид...