-
Постов
135 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Активность репутации
-
zairkz отреагировална master webs в DeviceInfo - модуль для получения информации о девайсе
ip не отображает {$IF defined(IOS) or defined(MacOs)} with TUIDevice.Wrap(TUIDevice.OCClass.currentDevice) do begin DeviceInfo.diPlatformVer := systemVersion.UTF8String; DeviceInfo.diDevice := model.UTF8String; DeviceInfo.diMacAddress := identifierForVendor.UUIDString.UTF8String; DeviceInfo.diIPAddress := 'not found'; end; <- добавил // ShowMessage(uniqueIdentifier.UTF8String); // ShowMessage(identifierForVendor.UUIDString.UTF8String); {$ENDIF}
при компиляции для mac ругает что нет файла
[dccosx Fatal Error] uDevice.pas(42): F2613 Unit 'IOSapi.UIKit' not found.
не смог найти
-
zairkz отреагировална alexbirukov в Ошибки и косяки Delphi XE10 Seattle и xCode 7
И так, пока русскоязычная и англоязычная части интернета молчат по поводу работы в новой Delphi XE10 Seattle в связке с xCode 7, а компании представители описывают, какое замечательное вышло обновление, пользователи столкнулись с проблемой, что приложения, сделанные на XE10 Seattle, xCode 7 + SDK9, не запускаются на предыдущих платформах.
Не совсем понятно, почему в упомянутых сегментах интернета нет совершенно никакой информации по данному поводу. Опять впереди планеты все Китай.
Пользователь блога подробно описывает конфигурацию, на которой он тестировал запуск приложения и описание проблемы. Несколько реальных устройств на разных прошивках, разные версии ПО и пр.
Коротко о главном. Если вы хотите, как можно скорей перейти на новую Delphi XE10 Seattle с целью писать свежие приложения\обновления для iOS, спешу вас разочаровать. Ваши программы перестанут работать на предыдущих версиях iOS. Статистика испытаний такова, что приложения собранные на XE10 Seattle, xCode 7 + SDK9 будут работать только на устройствах под управлением iOS9.
Вторая проблема, состоит в том, что недавнего времени AppStore при проверке приложений стала проверять их именно на iOS 9, а приложения собранные на XE8.1 такую проверку не проходят, так как зависают на стартовой заставке приложения и как следствие их отклоняют. Вот так то. Прошла уже целая неделя, а интернет по данному поводу ничего сказать нам особо не может.
На днях появилась статья от Сарины Дю Понт, о том, как всё же запустить приложение сделанные в XE8.1 на iOS9.
В результате изысканий Китайских друзей, получаем на данный момент такую картину:
XE8 + iOS 6 = полёт нормальный
XE8 + iOS 7 = полёт нормальный
XE8 + iOS 8 = полёт нормальный
XE8 + iOS 9 = зависание на экране заставки (если не воспользоваться советом Сарины)
XE10 + iOS 6 = приложение вылетает
XE10 + iOS 7 = приложение вылетает
XE10 + iOS 8 = приложение вылетает
XE10 + iOS 9 = полёт нормальный
Таким образом в XE10 Seattle и xCode 7 можно получить на данный момент только приложение, работающее на iOS9.
Ждём Delphi XE10 Seattle Update 1.
P.S. А в на Android в Delphi XE10 Seattle приложение с компонентами для отправки Push не запускается в режиме Release — Application Store. Что тоже, очень и очень печально.
-
zairkz отреагировална Brovin Yaroslav в FGX хотелось бы TfgToast для Android и IOS
На самом деле такой компонент у меня есть, но я его не публиковал, так как не довел до релизного состояния. Постараюсь доделать и выложить.
-
zairkz отреагировална rustam_d в [RAD X] Push уведомления
вот мой рабочий
от вашего пару отличий все же есть...
1. <permission android:name="%package%.permission....
2. блок <receiver тоже отличается кажется весь
я добавлял советы сабины блоками Rustam added и end )
не уверен, но вдруг вам поможет
<?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="%package%" android:versionCode="%versionCode%" android:versionName="%versionName%" android:installLocation="%installLocation%"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> <%uses-permission%> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="%persistent%" android:restoreAnyVersion="%restoreAnyVersion%" android:label="%label%" android:debuggable="%debuggable%" android:largeHeap="%largeHeap%" android:icon="%icon%" android:theme="%theme%" android:hardwareAccelerated="%hardwareAccelerated%"> <!--Rustam added --> <!-- GCM connects to Google Services. --> <uses-permission android:name="android.permission.INTERNET" /> <!-- GCM requires a Google account. --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- Keeps the processor from sleeping when a message is received. --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- Creates a custom permission so only this app can receive its messages. NOTE: the permission *must* be called PACKAGE.permission.C2D_MESSAGE, where PACKAGE is the application's package name. --> <permission android:name="%package%.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="%package%.permission.C2D_MESSAGE" /> <!-- This app has permission to register and receive data message. --> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!--Rustam added end--> <%application-meta-data%> <!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden" android:launchMode="singleTask"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="%libNameValue%" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!--Rustam added --> <receiver android:name="com.embarcadero.gcm.notifications.GCMNotification" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="%package%" /> </intent-filter> </receiver> <service android:name="com.embarcadero.gcm.notifications.GCMIntentService" /> <!--Rustam added end--> <%activity%> <receiver android:name="com.embarcadero.firemonkey.notifications.FMXNotificationAlarm" /> <%receivers%> </application> </manifest> <!-- END_INCLUDE(manifest) --> -
zairkz отреагировална krapotkin в Динамическое создание и уничтожение TForm
не знаю, у меня формы с Action=caFree нормально убиваются
то, что при этом не сразу вызывается деструктор, это описанное поведение
но есть еще form.Release
кроме того пытаюсь привыкнуть к созданию форм
TMyForm.Create(NIL).Show; либо диалогов
var f:TMyDialog; begin f:=TMyDialog.Create(NIL); f.showModal(procedure (AResult:TModalResult) begin case AResult of mrOK:begin end; end; end); FreeAndNil(F); end; -
zairkz отреагировална Brovin Yaroslav в [TListBox] Как отобразить итемы в виде панелей?
Добрый день,
Делаете стиль для итема, в виде панельки Устаналиваете в лист боксе размер итема: ItemHeight, ItemWidth. Для всех итемов устанавливаете ваш стиль Все готово. P.S. TGridLayout не лучший выбор при большом количестве итемов. Так как листбокс реально грузит стили только для видимой части итемов. И при прокрутке только меняет стили местами. А TGridLayout загрузит все элементы. В итоге проигрышь по памяти и по скорости.
-
zairkz отреагировална alexbirukov в KTeam приложение для уведомления о ДТП мотоциклистов Челябинска
Разработчик: Александр Бирюков
Ссылки на приложения: iOS и Android
Описание:
Алгоритм работы:
Пользователь попавший в ДТП создает заявку или нажатием кнопки SOS в экстренной ситуации отправляет экстренное сообщение на сервер. Модераторы получают СМС уведомления о произошедшей аварии. После модерации пользователи системы получают СМС уведомления с адресом аварии и Push уведомления.
-
zairkz отреагировална Kitty в Как получить Thumbnail файла mp4?
Спасибо, понятно. Я просто думала, что раз обыкновенный стандартный проводник в Windows показывает превью любого видео файлов (как на картинке), то и функция LoadThumbnailFromFile сумет вытащить такое превью.
-
zairkz отреагировална Brovin Yaroslav в Как получить Thumbnail файла mp4?
Добрый день,
Собственно исключение оправдано. Вы пытаетесь в качестве картинки подсунуть видео. И считаете, что объект TBitmap почему-то должен работать с видео. Почему тогда туда не подсунуть аудио запись или файл экселя, полагая, что он выдаст скриншот файла и тд. Мысль я думаю понятна.
Теперь к задаче: решить ее можно двумя путями:
Простой. Храните вместе с видео обложку с видео. И когда нужно отобразить обложку просто загружать ее. Сложный. Поискать в интернете, как храниться обложка видео в видеофайле и написать код, который будет читать ее из файла. -
zairkz отреагировална Syb в Как сделать чтобы приложение постоянно висело в памяти и не закрывалось (как будильники)
тут http://blog.blong.com/ почитай
Вообще почитай про особенности приложений в андроид, он если это не сервис, не активное приложение может закрыть если ему покажется, что оно много отъедает например... Что касается приложений на XE .. это ему кажется всегда практически. Поэтому описываешь сервис на Java который тебе что то всегда делает и складывает аккуратно это в файлик , а твое активити работает уже с файлом,например. Можно было бы вызывать из сервиса функцию сразу делать изменения в активити без файла и вызывать функцию из делфи кода, тогда тебе нужно обязательно перед этим сартануть активити(там ньюансы есть)...
-
zairkz отреагировална Andrey Efimov в Как сделать чтобы приложение постоянно висело в памяти и не закрывалось (как будильники)
Приложение не закрывается когда вы выходите на рабочий стол, оно продолжает висеть в памяти устройства, но уже с другим приоритетом.
Хотел было написать на эту тему статью, но ... нагло процитирую слова из первой попавшейся книжки (эту информацию можно найти в справке "Processes and Application Life Cycle"):
-
zairkz отреагировална Cody71727172 в Работа сервиса при закрытом приложении
Большое спасибо!
Буду разбираться
--------------------------------------------
Все работает)
Правда сервис в манифесте всё равно должен быть прописан, чтобы принимать сообщения с закрытым приложением
-
zairkz отреагировална voytalexey в [Android] Как в вызываемом приложении получить результат, объект JIntent?
Заголовок топика должен звучать так:
"Как в вызываемом приложении получить доступ к объекту JIntent?"
К сожалению, на этом форуме редактировать содержание поста можно, а вот его заголовок нет.
Теперь ответ на вопрос.
Доступ есть через SharedActivity.getIntent (надо подключить модули FMX.Helpers.Android и Androidapi.JNI.GraphicsContentViewText).
Для возврата информации в вызывающее приложение использовал
SharedActivity.setResult(TJActivity.JavaClass.RESULT_OK, SharedActivity.getIntent); SharedActivity.finish(); Для того чтоб в главном приложении получить результат, надо перед вызовом подписаться на сообщение (в XE6):
Intent := TJIntent.Create; Intent.setClassName(StringToJString('com.MySoft.PluginOne'),StringToJString('com.embarcadero.firemonkey.FMXNativeActivity')); // наполняем данные для передачи в плагин intent.putExtra(StringToJString('dbl'),123.456); intent.putExtra(StringToJString('str'),StringToJString('qwerty')); // подписываемся на сообщение, колл-бек метод "HandleActivityMessage" FMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage(TMessageResultNotification,HandleActivityMessage); // стартуем плагин SharedActivity.startActivityForResult(Intent,0); Получение результата в вызывающем приложении делается в колл-бек методе, я делал так:
procedure TForm1.HandleActivityMessage(const Sender: TObject; const M: TMessage); var RequestCode, ResultCode: Integer; Intent: JIntent; d:double; s:string; begin if not(M is TMessageResultNotification) then exit; TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, FMessageSubscriptionID); FMessageSubscriptionID := 0; RequestCode:=TMessageResultNotification(M).RequestCode; ResultCode:=TMessageResultNotification(M).ResultCode; Intent:=TMessageResultNotification(M).Value; if ResultCode = TJActivity.JavaClass.RESULT_OK then begin Memo1.Lines.Append('RESULT_OK'); if Assigned(Intent) then begin d:=Intent.getDoubleExtra(StringToJString('dbl'),111.111); s:=JStringToString(Intent.getStringExtra(StringToJString('str'))); Memo1.Lines.Append('d='+FloatToStr(d)); Memo1.Lines.Append('s='+s); end; end else if ResultCode = TJActivity.JavaClass.RESULT_CANCELED then begin Memo1.Lines.Append('RESULT_CANCELED'); end; end; Проверено в ХЕ6, идеи почерпнуты из следующих источников:
http://vlad8.com/tech/android-intents-tutorial/
http://www.darkraha.com/rus/mobile/android/api/intent.php
http://www.blong.com/Articles/DelphiXE6AndroidActivityResult/ActivityResult.htm
в последней ссылке есть описание как решать эту проблему в ХЕ5, есть отличия.
-
zairkz отреагировална Brovin Yaroslav в [Статья] Календарь с подсветкой дней на базе TCalendar без создания нового компонента
Попытка номер 3, еще раз обновил архив. Скачайте заново.
-
zairkz отреагировална xenon54 в Push сообщения IOS - как получить токен ?
XE8 без апдейтов.
На какой строке AV?
Provisioning profile должен включать APN.
uses: System.PushNotification, FMX.PushNotification.iOS
-
zairkz отреагировална Brovin Yaroslav в Разработка настольной версии клиента для форума по FireMonkey с использованием FireMonkey
Немного переработан внешний вид. Теперь можно просматривать темы и посты с поддержкой форматирования. Добавлен пункт меню просмотр последних тем.
-
zairkz отреагировална krapotkin в MultiView и MasterButton
Новая особенность MultiView
MasterButton работает только в случае, если лежит в одном и том же контейнере, что и MultiView
у меня была раскладка - Тулбар, Align = Top
TLayout Align = Client
в Layout помещен MultiView и TPanel - TargetControl
кнопка на тулбаре установлена как MasterButton
в XE8.1 она работала, в DX10 перестала
всю голову сломал, пока догадался тулбар сунуть в панель
-
zairkz отреагировална Равиль Зарипов (ZuBy) в как получить координаты маркера на карте?
возможно нет проблем только на XE 10,
procedure TForm22.MapView1MapClick(const Position: TMapCoordinate); begin myCoordTap.Latitude := Position.Latitude; myCoordTap.Longitude := Position.Longitude; Form1.Show; end; на кнопке, второй формы
// маркер по нажатию myDescrTap := TMapMarkerDescriptor.Create(myCoordTap, Edit1.Text); myDescrTap.Icon := TBitmap.Create; myDescrTap.Icon.Assign(Form22.ImageList1.Source[1].MultiResBitmap.Bitmaps[DeviceInfo.diScale].BitmapItem.Bitmap); {$IFDEF ANDROID} myDescrTap.Appearance := TMarkerAppearance.Billboard; {$ENDIF} // myDescrTap.Snippet := myRouteInfo.DistanceAsString + ', ' + myRouteInfo.DurationAsString; myMarkerTap := Form22.MapView1.AddMarker(myDescrTap); Close; -
zairkz отреагировална Brovin Yaroslav в Как задать внутренний отступ padding для контента TScrollBox?
Речь шла о XE10. И отступ был добавлен и для TScrollBox и для нового скроллбокса TPresentedScrollBox.
-
zairkz отреагировална Brovin Yaroslav в RSS форума
http://fire-monkey.ru/index.php?app=core&module=global§ion=rss&type=forums&id=1
Вывод последних 50 тем.
-
zairkz отреагировална Кривяков Виталий в TUITabControl
Используйте на здоровье, я не против, но претензии не принимаю .
-
zairkz отреагировална Brovin Yaroslav в [Android] Как отключить программную кнопку Меню?
Добрый день,
Эта кнопка считается устаревшей в версиях андроида начиная с 14 (Ice Cream). Система читает ваш манифест и смотрит на MinSdkLevel. Если он меньше 14, то она пытается сэмулировать (Lolipop) и добавить эту кнопку.
Чтобы ее убрать, нужно поднять нижнюю границу или таргет версию до 14 в манифесте:
<android xmlns:android="http://schemas.android.com/apk/res/android"> <tool-api-level>14</tool-api-level> <manifest> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14"/> </manifest> </android> В вашем приложении:Открываете файл AndroidManifest.template.xml. Он лежит в папке с вашим проектным файлом (появляется при первой попытке компиляции на Андроид) Меняем значения в теге uses-sdkБыло:
<uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> Стало:
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> Собираем приложение. Теперь кнопка меню пропадет на новых версиях Андроида.Чтобы при повороте приложение не вылетало на версиях среды до XE8 включительно дополнительно нужно добавить в манифест.
Начиная с XE10 правок вносить не надо.
Было:
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden" android:launchMode="singleTask"> Стало:
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask"> -
zairkz отреагировална Равиль Зарипов (ZuBy) в WebForm.Fmx
делал когда-то так, может что изменилось
uses {$IFDEF ANDROID}REST.Authenticator.OAuth.WebForm.FMX{$ELSE}REST.Authenticator.OAuth.WebForm.Win var WebView: Tfrm_OAuthWebForm; ... procedure TForm1.FormCreate(Sender: TObject); begin WebView := Tfrm_OAuthWebForm.Create(self); WebView.OnTitleChanged := self.OAuth2_GoogleTasks_BrowserTitleChanged; end; ... procedure TForm1.OAuth2_GoogleTasks_BrowserTitleChanged(const ATitle: string; var DoCloseWebView: boolean); begin if Pos('Success code', ATitle) > 0 then begin AuthCode := Copy(ATitle, 14, Length(ATitle)); if (AuthCode <> '') then begin Memo1.Lines.Add(AuthCode); DoCloseWebView := true; WebView.Release; end; end; end; ... WebView.ShowWithURL(LURL); -
zairkz отреагировална antarey в Есть ли статьи о том, как редактировать стили и использовать BitmapStyleDesigner ?
Подскажите, есть где-то, и где если есть, подробная документация по редактированию и созданию новых стилей средствами IDE и BitmapStyle Designer
-
zairkz отреагировална Равиль Зарипов (ZuBy) в TMapsEngine
Обновил TMapsEngine с выходом Delphi 10 Seattle
Вырезал нативный сенсор (т.к. исправили TLocationSensor) переименовал методы, в соответствии с используемым API Добавил Yandex Locator API (определение координат по IP, WI-FI, GSM) для определения своих координат, достаточно отправить пустой IP адрес, yandex сам распознает откуда был запрос сделан
модуль TMapsEngine_Seattle_10.zip