Лидеры
Популярный контент
Показан контент с высокой репутацией 11.03.2017 во всех областях
-
Как заполнить эллипс?
Rusland и 4 других отреагировал Равиль Зарипов (ZuBy) за вопрос
var MyRect: TRectF; begin MyRect := RectF(10, 10, 30, 30); if Canvas.BeginScene then try Canvas.Fill.Color := TAlphaColorRec.Red; Canvas.Stroke.Color := TAlphaColorRec.Black; Canvas.FillEllipse(MyRect, 1); Canvas.DrawEllipse(MyRect, 1); finally Canvas.EndScene; end; end; FillEllipse - заливка DrawEllipse - обводка5 баллов -
Как заполнить эллипс?
Kitty и 2 других отреагировал Равиль Зарипов (ZuBy) за вопрос
для заливки используется Canvas.Fill.Color := цвет; Canvas.FillEllipse();3 балла -
Одинаковые логотипы и картинки
Rusland и 2 других отреагировал Евгений Корепов за вопрос
Получите от медицинского центра разрешение на использование их логотипа. Можно на русском языке. Текст произвольный - поручаем Kitty изготовление приложения и разрешаем использование логотипов, торговых марок, фирменных наименований и т.д. в приложениях. Подробнее здесь https://play.google.com/intl/ru/about/ip-deception-spam/impersonation-ip/ И отправьте скан (pdf к примеру) этого письма в гугл, подробности тут https://support.google.com/googleplay/android-developer/answer/6320428 Последнее время все сложнее публиковать приложения, правила уже балансируют на грани маразма. Одно моё приложение заблокировали по причине того что я "выдавал" себя за магазин линолиума в какой то немецкой деревушке - логотип приложения был немного искаженной зеркальной копией логотипа этого магазина, так же отличались цвета - у магазина желтый, у приложения оранжевый. Вот такие дела... Так же сильно зависит от места модерации - если повезет попасть в британский офис, то вам досконально объяснят причину блокировки, приведут примеры правильного и не правильного решения вашего вопроса. Вот пример из моей практики: Если не повезет попасть в подмосковье - то вы не получите комментариев, апелляция будет проигнорирована и относится к вам будут как к ничтожеству. Российская специфика - мальчик получивший работу в Великом Гугле, благодаря двоюродному дяде, сам становится Великим. И естественно он обязан быть гавном, так у него в должностной инструкции написано ;-)3 балла -
Как убрать лишние уведомления в шторке при пуше?
#WAMACO и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html смотрите Delphi код, там есть получение DeviceID2 балла -
Мне это видится примерно так: Отключите автоматическое создание форм. Сначала создайте Splash-форму (эту можно оставить в автомате). Отобразите ее. Создайте вашу "главную" форму. В процедуре OnFormCreate сделайте Preload для стиля (тут на форуме это обсуждалось) - это позволит загрузить стиль, отрисовать все и только затем отобразит вашу форму (по крайней мере - отрисовка произойдет мгновенно, проверено на формах с сотнями компонентов). На OnShow вашей "главной" формы сделайте Application.MainForm := ваша_"главная"_форма и скройте Splash-форму. З.Ы. И, да - лучше оперировать фреймами и создавать их и удалять только тогда, когда они нужны. На скорость это практически не влияет, даже если у вас меню будут фреймами... Это из личного опыта - все достаточно быстро!2 балла
-
Как убрать лишние уведомления в шторке при пуше?
dante333 и ещё один отреагировал Евгений Корепов за вопрос
Тоже было подобное дублирование по причине указанной dante333. Костыль типа Kinvey не использовал, смысла использовать сторонний сервис, когда вопрос решается любым хостингом и двумя десятками строк на php? Действительно при каждой установке создается новый токен. Вроде и при обновлении прошивки телефона новый токен и еще при нескольких условиях. По этой причине вставку в базу токена выполняю следующим запросом: INSERT INTO gcm_dixy (`DeviceID`, `DeviceToken`, `last_update`, `add_date`, `RequestCount`, `Active`) VALUES ('$DeviceID','$DeviceToken', NOW(),NOW(), 1, 1) ON DUPLICATE KEY UPDATE `DeviceToken` = '$DeviceToken', `last_update` = NOW(), `RequestCount` = `RequestCount` + 1, `Active` = 1 Главное тут "ON DUPLICATE KEY UPDATE" , уникальный ключ в таблице - DeviceID, он никогда не меняется на устройстве. Видимо программистам из Kinvey не известен этот нюанс, вот глюк и всплывает.2 балла -
Принудительная остановка прокрутки ListView
Rusland и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
На мобильных это делается с помощью TAniCalculations, в ModernLV есть метод getAniCalc if ListView1.getAniCalc <> nil then ListView1.getAniCalc.Animation := false; в момент вызова этого кода скроллинг остановится2 балла -
Как не показывать главное окно до полной его отрисовки?
Равиль Зарипов (ZuBy) и ещё один отреагировал krapotkin за вопрос
вадим, из вашего текста следует, что у вас все формы создаются при старте приложения но это и раньше было плохой практикой, а на мобилах и подавно2 балла -
2 балла
-
Для работы с Sqlite можете использовать компоненты FireDAC http://docwiki.embarcadero.com/CodeExamples/Berlin/en/FireDAC.SQLite_Sample2 балла
-
Например так: procedure CreateArhivTables(CreateDatabaseName: string); var TableToCreate: TFDQuery; begin TableToCreate := TFDQuery.Create(nil); TableToCreate.ConnectionName := CreateDatabaseName; try TableToCreate.SQL.Clear; TableToCreate.SQL.Add('create table if not exists Marks(' +' Mark text primary key, ' +' CheckData text);'); TableToCreate.ExecSQL; end;2 балла
-
Меняющееся изображение на кнопке
Kitty отреагировал Равиль Зарипов (ZuBy) за вопрос
ошибаетесь 1) скейлы есть и в Windows и в Mac 2) Линукс не скоро станет поддерживать GUI1 балл -
Выполнение регулярных операций в сервисе - статистика
ENERGY отреагировал Равиль Зарипов (ZuBy) за вопрос
в этой теме есть упоминание про сервис kinvey, возможно вам подойдёт1 балл -
Пуш и андроид 6
Евгений Корепов отреагировал Дмитрий Ш. за вопрос
по пушам на MIUI лучше почитать на 4pda.ru/ все описано и с картинками )1 балл -
Мой вариант Broadcast Receiver, на мой взгляд наиболее оптимизирован и удачен. По сравнению с известным кодом от barisatalay . Отличия - исправлена утечка, чуть быстрее работает, за счет того что создается один фильтр в него добавляется несколько Actions и одна регистрация на него, нет лишних конвертирований с Jstring to string и обратно, адаптирован под Delphi 10 (JFMXBroadcastReceiver) , упрощена работа с классом (не нужно помнить о регистрации и вызывать ее заранее) , и самое главное - может получать getResultCode текущего ресивера (к примеру он нужен при получении статуса смс сообщения и в других случаях.). unit BroadcastReceiver; interface {$IFDEF ANDROID} uses Androidapi.JNI.Embarcadero, Androidapi.JNI.GraphicsContentViewText, Androidapi.helpers, Androidapi.JNIBridge, FMX.Helpers.Android, Androidapi.JNI.JavaTypes, System.Classes, System.SysUtils; type TBroadcastReceiver = class; TListener = class(TJavaLocal, JFMXBroadcastReceiverListener) private fOwner: TBroadcastReceiver; fReceiver: JFMXBroadcastReceiver; public constructor Create(aOwner: TBroadcastReceiver); destructor Destroy; override; procedure onReceive(context: JContext; intent: JIntent); cdecl; end; TOnReceive = procedure (aContext: JContext; aIntent: JIntent; aResultCode: integer) of object; TBroadcastReceiver = class private fListener : TListener; fRegistered: boolean; fOnReceive: TOnReceive; public constructor Create(aOnReceiveProc: TOnReceive); destructor Destroy; override; procedure AddActions(const Args: array of JString); procedure SendBroadcast(const aValue: string); end; {$ENDIF} implementation {$IFDEF ANDROID} { TBroadcastReceiver } constructor TBroadcastReceiver.Create(aOnReceiveProc: TOnReceive); begin inherited Create; fListener := TListener.Create(Self); fOnReceive := aOnReceiveProc; end; destructor TBroadcastReceiver.Destroy; begin fListener.Free; inherited; end; procedure TBroadcastReceiver.AddActions(const Args: array of JString); var vFilter: JIntentFilter; i: Integer; begin if fRegistered then TAndroidHelper.context.getApplicationContext.UnregisterReceiver(fListener.fReceiver); vFilter := TJIntentFilter.JavaClass.init; for i := 0 to High(Args) do vFilter.addAction(Args[i]); TAndroidHelper.context.getApplicationContext.registerReceiver(fListener.fReceiver, vFilter); fRegistered := true; end; procedure TBroadcastReceiver.SendBroadcast(const aValue: string); var Inx: JIntent; begin Inx := TJIntent.Create; Inx.setAction(StringToJString(aValue)); TAndroidHelper.Context.sendBroadcast(Inx); end; constructor TListener.Create(aOwner: TBroadcastReceiver); begin inherited Create; fOwner := aOwner; fReceiver := TJFMXBroadcastReceiver.JavaClass.init(Self); end; destructor TListener.Destroy; begin TAndroidHelper.context.getApplicationContext.unregisterReceiver(fReceiver); inherited; end; // usually android call it from "UI thread" - it's not main Delphi thread procedure TListener.onReceive(context: JContext; intent: JIntent); begin if Assigned(fOwner.fOnReceive) then fOwner.fOnReceive(Context, Intent, fReceiver.getResultCode); end; {$ENDIF} end. Как использовать // указывать нужно сразу все нужные вам Actions в Add через запятую, не по одной. fBroadcast := TBroadcastReceiver.Create(OnReceiveBroadcast); fBroadcast.AddActions([StringToJString(SENT_ACTION)]); << Custom action ------------- // или например сразу несколько Actions fBroadcast.AddActions([TJIntent.JavaClass.ACTION_SCREEN_OFF, TJIntent.JavaClass.ACTION_SCREEN_ON]);1 балл
-
Kitty,а вы попробуйте переустановить свое приложение.Удалить и заново поставить.Получите +1 к пушам. Было 3,станет 4.Больше переустановок,больше пушей. Когда работал с Kinvey была такая же история.В блогах на Embarcadero обсуждали даже.Если в кратце и по памяти,то при переустановке приложения,в Kinvey дублируется запись устройства на которое отправляется push.Что бы избежать этого,надо делать доп проверку на уже существующий токен для данного устройства.Повторюсь что это по памяти,но суть понятна.Можете поискать в блогах Sarina Dupont на Embarcadero. Собственно после этого я и перешел на нативные пуши. Потому как написал многоуважаемый ZuBy: Вот,нашел: https://community.embarcadero.com/blogs/entry/remote-push-notifications-on-android-with-rad-studio-xe6-795 Второй коммент. 15 раз установил,15 пушей.1 балл
-
Рисование маршрута на MapView, Delphi, Android
Kitty отреагировал Равиль Зарипов (ZuBy) за вопрос
Посмотрите эту тему Последний вариант по ссылке1 балл