Перейти к содержанию
Fire Monkey от А до Я

zairkz

Пользователи
  • Постов

    135
  • Зарегистрирован

  • Посещение

  • Победитель дней

    12

Активность репутации

  1. Like
    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. 
     
    не смог найти


  2. Like
    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. Что тоже, очень и очень печально.
  3. Like
    zairkz отреагировална Brovin Yaroslav в FGX хотелось бы TfgToast для Android и IOS   
    На самом деле такой компонент у меня есть, но я его не публиковал, так как не довел до релизного состояния. Постараюсь доделать и выложить.
  4. Like
    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) -->
  5. Like
    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;
  6. Like
    zairkz отреагировална Brovin Yaroslav в [TListBox] Как отобразить итемы в виде панелей?   
    Добрый день,
    Делаете стиль для итема, в виде панельки Устаналиваете в лист боксе размер итема: ItemHeight, ItemWidth. Для всех итемов устанавливаете ваш стиль Все готово. P.S. TGridLayout не лучший выбор при большом количестве итемов. Так как листбокс реально грузит стили только для видимой части итемов. И при прокрутке только меняет стили местами. А TGridLayout загрузит все элементы. В итоге проигрышь по памяти и по скорости.
  7. Like
    zairkz отреагировална alexbirukov в KTeam приложение для уведомления о ДТП мотоциклистов Челябинска   
    Разработчик: Александр Бирюков
    Ссылки на приложения: iOS и Android
    Описание:
     


    Алгоритм работы:
    Пользователь попавший в ДТП создает заявку или нажатием кнопки SOS в экстренной ситуации отправляет экстренное сообщение на сервер. Модераторы получают СМС уведомления о произошедшей аварии. После модерации пользователи системы получают СМС уведомления с адресом аварии и Push уведомления.




  8. Like
    zairkz отреагировална Kitty в Как получить Thumbnail файла mp4?   
    Спасибо, понятно. Я просто думала, что раз обыкновенный стандартный проводник в Windows показывает превью любого видео файлов (как на картинке), то и функция LoadThumbnailFromFile сумет вытащить такое превью.

  9. Like
    zairkz отреагировална Brovin Yaroslav в Как получить Thumbnail файла mp4?   
    Добрый день,
     
    Собственно исключение оправдано. Вы пытаетесь в качестве картинки подсунуть видео. И считаете, что объект TBitmap почему-то должен работать с видео. Почему тогда туда не подсунуть аудио запись или файл экселя, полагая, что он выдаст скриншот файла и тд. Мысль я думаю понятна.
     
    Теперь к задаче: решить ее можно двумя путями:
    Простой. Храните вместе с видео обложку с видео. И когда нужно отобразить обложку просто загружать ее. Сложный. Поискать в интернете, как храниться обложка видео в видеофайле и написать код, который будет читать ее из файла.
  10. Like
    zairkz отреагировална Syb в Как сделать чтобы приложение постоянно висело в памяти и не закрывалось (как будильники)   
    тут http://blog.blong.com/ почитай
    Вообще почитай про особенности приложений в андроид, он если это не сервис, не активное приложение может закрыть если ему покажется, что оно много отъедает например... Что касается приложений на XE .. это ему кажется всегда практически. Поэтому описываешь сервис на Java который тебе что то всегда делает и складывает аккуратно это в файлик , а твое активити работает уже с файлом,например. Можно было бы вызывать из сервиса функцию сразу делать изменения в активити без файла и вызывать функцию из делфи кода, тогда тебе нужно обязательно перед этим сартануть активити(там ньюансы есть)...   
  11. Like
    zairkz отреагировална Andrey Efimov в Как сделать чтобы приложение постоянно висело в памяти и не закрывалось (как будильники)   
    Приложение не закрывается когда вы выходите на рабочий стол, оно продолжает висеть в памяти устройства, но уже с другим приоритетом.
    Хотел было написать на эту тему статью, но ... нагло процитирую слова из первой попавшейся книжки (эту информацию можно найти в справке "Processes and Application Life Cycle"):
     
     
  12. Like
    zairkz отреагировална Cody71727172 в Работа сервиса при закрытом приложении   
    Большое спасибо!
    Буду разбираться
    --------------------------------------------
    Все работает)
    Правда сервис в манифесте всё равно должен быть прописан, чтобы принимать сообщения с закрытым приложением
  13. Like
    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, есть отличия.
  14. Like
    zairkz отреагировална Brovin Yaroslav в [Статья] Календарь с подсветкой дней на базе TCalendar без создания нового компонента   
    Попытка номер 3, еще раз обновил архив. Скачайте заново.
  15. Like
    zairkz отреагировална xenon54 в Push сообщения IOS - как получить токен ?   
    XE8 без апдейтов.
    На какой строке AV?
     
    Provisioning profile должен включать APN.
    uses: System.PushNotification, FMX.PushNotification.iOS
  16. Like
    zairkz отреагировална Brovin Yaroslav в Разработка настольной версии клиента для форума по FireMonkey с использованием FireMonkey   
    Немного переработан внешний вид. Теперь можно просматривать темы и посты с поддержкой форматирования. Добавлен пункт меню просмотр последних тем.  

  17. Like
    zairkz отреагировална krapotkin в MultiView и MasterButton   
    Новая особенность MultiView 
    MasterButton работает только в случае, если лежит в одном и том же контейнере, что и MultiView
     
    у меня была раскладка - Тулбар, Align = Top
    TLayout Align = Client
    в Layout помещен MultiView и TPanel - TargetControl
    кнопка на тулбаре установлена как MasterButton
    в XE8.1 она работала, в DX10 перестала
    всю голову сломал, пока догадался тулбар сунуть в панель
  18. Like
    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;
  19. Like
    zairkz отреагировална Brovin Yaroslav в Как задать внутренний отступ padding для контента TScrollBox?   
    Речь шла о XE10. И отступ был добавлен и для TScrollBox и для нового скроллбокса TPresentedScrollBox.
  20. Like
    zairkz отреагировална Brovin Yaroslav в RSS форума   
    http://fire-monkey.ru/index.php?app=core&module=global&section=rss&type=forums&id=1
     
    Вывод последних 50 тем.
  21. Like
    zairkz отреагировална Кривяков Виталий в TUITabControl   
    Используйте на здоровье, я не против, но претензии не принимаю .
  22. Like
    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">
  23. Like
    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);
  24. Like
    zairkz отреагировална antarey в Есть ли статьи о том, как редактировать стили и использовать BitmapStyleDesigner ?   
    Подскажите, есть где-то, и где если есть, подробная документация по редактированию и созданию новых стилей средствами IDE и BitmapStyle Designer
  25. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в TMapsEngine   
    Обновил TMapsEngine с выходом Delphi 10 Seattle
    Вырезал нативный сенсор (т.к. исправили TLocationSensor) переименовал методы, в соответствии с используемым API Добавил Yandex Locator API (определение координат по IP, WI-FI, GSM) для определения своих координат, достаточно отправить пустой IP адрес, yandex сам распознает откуда был запрос сделан
     
    модуль TMapsEngine_Seattle_10.zip
×
×
  • Создать...