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

bossalex

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

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

  • Посещение

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

    1

bossalex стал победителем дня 30 сентября 2017

bossalex имел наиболее популярный контент!

Посетители профиля

2 626 просмотров профиля

Достижения bossalex

  1. А есть можно выложить исходники для приложения трекера
  2. Всем привет пытаюсь сделать push с большой картинкой на Delphi FMX 10.3.1 RIO используя материалы этого топика и http://delphifmandroid.blogspot.com/2014/07/java_11.html В итоге подключил свой ImageDownloader.class по закачке картинки с url и заменил модифицированный мною NotificationPublisher.class и обновил fmx.jar создал classes.dex осталось проверить в проекте, отключить дефолтный classes.dex задеплоить новый . Надо бы еще в push добавить кнопку со ссылкой на url сайта в NotificationPublisher.class я переменную для него добавил, осталось реализовать. Там как через активи это делается или через интент, RIO IMAGE PUSH добавил архив с class и fmx.jar push.zip
  3. Надо вывести в puch картинку, которую получаем по ссылке. По ссылке понятно как получить картинку, а как ее вывести в puch сообщение
  4. Как получить - узнать ip адрес устройства на Delphi fmx android
  5. Большое спасибо выручили, только как-то стало за мудрено использовать компонент.
  6. cсылка не работает, пожалуйста дайте прямую ссылку на яндекс диск
  7. Ниже код работал при правильном манифесте(AndroidManifest.template.xml? его переделал перестал, а исходник не сохранил. Если кто гуру в этом деле помогите, в долгу не останусь. Являюсь пожизненным поклонником Delphi от 1 версии до последней, первые приложения писал начиная с 1997г. если кого интересуют мои наработки поделюсь https://www.fl.ru/users/bossalex/ где-то рабочий код брал под fmx 10.3.1 RIO, этот работает только на 10.1.2 ==========================исходник проекта прикрепил----------->>> unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, Androidapi.JNI.Location, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os,Androidapi.Helpers, FMX.Layouts, FMX.ListBox, FMX.StdCtrls, FMX.Controls.Presentation,FMX.Platform,System.Rtti; type TLocationListener = class; TForm1 = class(TForm) Button1: TButton; ListBox1: TListBox; CheckBox1: TCheckBox; CheckBox2: TCheckBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; procedure Button1Click(Sender: TObject); { Private declarations } private FLocationManager : JLocationManager; locationListener : TLocationListener; public destructor Destroy; override; { Public declarations } procedure onLocationChanged(location: JLocation); end; TLocationListener = class(TJavaLocal, JLocationListener) private [weak] FParent : TForm1; public constructor Create(AParent : TForm1); procedure onLocationChanged(location: JLocation); cdecl; procedure onProviderDisabled(provider: JString); cdecl; procedure onProviderEnabled(provider: JString); cdecl; procedure onStatusChanged(provider: JString; status: Integer; extras: JBundle); cdecl; end; var Form1: TForm1; implementation {$R *.fmx} uses FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText; { TLocationListener } constructor TLocationListener.Create(AParent: TForm1); begin inherited Create; FParent := AParent; end; procedure TLocationListener.onLocationChanged(location: JLocation); begin FParent.onLocationChanged(location); end; procedure TLocationListener.onProviderDisabled(provider: JString); begin end; procedure TLocationListener.onProviderEnabled(provider: JString); begin end; procedure TLocationListener.onStatusChanged(provider: JString; status: Integer; extras: JBundle); begin end; { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var LocationManagerService: JObject; iter : JIterator; location : JLocation; ClipService: IFMXClipboardService; begin try if not Assigned(FLocationManager) then begin LocationManagerService := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.LOCATION_SERVICE); FLocationManager := TJLocationManager.Wrap((LocationManagerService as ILocalObject).GetObjectID); if not Assigned(locationListener) then locationListener := TLocationListener.Create(self); FLocationManager.requestLocationUpdates(TJLocationManager.JavaClass.GPS_PROVIDER, 10000, 10, locationListener, TJLooper.JavaClass.getMainLooper); end; iter := FLocationManager.GetAllProviders.Iterator; ListBox1.Clear; while iter.hasNext do begin ListBox1.Items.Add(JStringToString(iter.next.ToString)); end; CheckBox1.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.GPS_PROVIDER); CheckBox2.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.NETWORK_PROVIDER); location := FLocationManager.getLastKnownLocation(TJLocationManager.JavaClass.GPS_PROVIDER); onLocationChanged(location); except on e:Exception do begin if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService,ClipService) then Begin ClipService.SetClipboard(TValue.From<string>(e.Message)); ShowMEssage(e.Message); end; end; end; end; AndroidGPS.zip
  8. пробовал на Delphi 10.1.2 вот это код пашет, но был вариант и под RIO пахал, но сейчас нет посеял AndroidManifest.template.xml файл проекта прикрепил unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, Androidapi.JNI.Location, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os,Androidapi.Helpers, FMX.Layouts, FMX.ListBox, FMX.StdCtrls, FMX.Controls.Presentation; type TLocationListener = class; TForm1 = class(TForm) Button1: TButton; ListBox1: TListBox; CheckBox1: TCheckBox; CheckBox2: TCheckBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; procedure Button1Click(Sender: TObject); { Private declarations } private FLocationManager : JLocationManager; locationListener : TLocationListener; public destructor Destroy; override; { Public declarations } procedure onLocationChanged(location: JLocation); end; TLocationListener = class(TJavaLocal, JLocationListener) private [weak] FParent : TForm1; public constructor Create(AParent : TForm1); procedure onLocationChanged(location: JLocation); cdecl; procedure onProviderDisabled(provider: JString); cdecl; procedure onProviderEnabled(provider: JString); cdecl; procedure onStatusChanged(provider: JString; status: Integer; extras: JBundle); cdecl; end; var Form1: TForm1; implementation {$R *.fmx} uses FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText; { TLocationListener } constructor TLocationListener.Create(AParent: TForm1); begin inherited Create; FParent := AParent; end; procedure TLocationListener.onLocationChanged(location: JLocation); begin FParent.onLocationChanged(location); end; procedure TLocationListener.onProviderDisabled(provider: JString); begin end; procedure TLocationListener.onProviderEnabled(provider: JString); begin end; procedure TLocationListener.onStatusChanged(provider: JString; status: Integer; extras: JBundle); begin end; { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var LocationManagerService: JObject; iter : JIterator; location : JLocation; begin try if not Assigned(FLocationManager) then begin LocationManagerService := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.LOCATION_SERVICE); FLocationManager := TJLocationManager.Wrap((LocationManagerService as ILocalObject).GetObjectID); if not Assigned(locationListener) then locationListener := TLocationListener.Create(self); FLocationManager.requestLocationUpdates(TJLocationManager.JavaClass.GPS_PROVIDER, 10000, 10, locationListener, TJLooper.JavaClass.getMainLooper); end; iter := FLocationManager.GetAllProviders.Iterator; ListBox1.Clear; while iter.hasNext do begin ListBox1.Items.Add(JStringToString(iter.next.ToString)); end; CheckBox1.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.GPS_PROVIDER); CheckBox2.IsChecked := FLocationManager.isProviderEnabled(TJLocationManager.JavaClass.NETWORK_PROVIDER); location := FLocationManager.getLastKnownLocation(TJLocationManager.JavaClass.GPS_PROVIDER); onLocationChanged(location); except on e:Exception do showmessage('Ошибка :'+e.Message); end; end; destructor TForm1.Destroy; begin if Assigned(locationListener) then FLocationManager.removeUpdates(locationListener); inherited; end; procedure TForm1.onLocationChanged(location: JLocation); begin Label4.Text := location.getLatitude.ToString; Label5.Text := location.getLongitude.ToString; Label6.Text := location.getAltitude.ToString; end; end. AndroidGPS.zip
  9. Id_client Id выданный сервисом PUSH нотификации(и что такое центр нотификации компонент NotificationC: TNotificationCenter; Notification: TNotification; он получает сообщения от PUCH сервера и выводит количество сообщений на иконке приложения? ) прочитал статью http://blog.rzaripov.kz/2017/02/firebase-android-ios.html и 2 ую часть статьи, сделал под андроид Id это то что на закладке Cloud Messaging Идентификатор отправителя или что то другое пытаюсь к приложение подключить PUSH сообщения. С PUSH ни разу не сталкивался делаю приложение на Delphi FMX 10.1 android или надо ставить версию 10.3 RIO?
  10. Delphi 10.1 FMX android получаю данные с сервера в rest закодирован base64 хранится pdf, нужно его раскодировать и сохранить на устройстве - далее отобразить пользователю Пример ответа сервера: { "code": 200, "body": { "finishFlag": true, "instanceId": "c9d0328a-6234-46d9-bc3b-d8adef9a0a71", "nextStep": { "pdf": "JVBERi0xL....PRg0K", -- pdf в base64 (он большой, для примера обрезал) "sort_order": 10, "is_not_prepr": false, "stepType": "A$FS_PRINT", "clientStep": true } }, Как отобразит вроде пример есть через intent (я это делал только через THttp скачивал и через установленный с плеймаркет просмотрщиком PDF просматривал ) {$IFDEF ANDROID} Uses Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.Net; {$ENDIF} procedure btnPdfClick(Sender: TObject); var fName : String; {$IFDEF ANDROID} Intent : JIntent; URI : Jnet_Uri; {$ENDIF} begin fName := TPath.GetSharedDownloadsPath + PathDelim + 'test.pdf'; {$IFDEF ANDROID} URI := TJnet_Uri.JavaClass.parse(StringToJString('file:///' + fName)); intent := TJIntent.Create; intent.setAction(TJIntent.JavaClass.ACTION_VIEW); intent.setDataAndType(URI,StringToJString('application/pdf')); SharedActivity.startActivity(intent); {$ENDIF} end;
  11. Кто знает как яндекс почту прикрутить к indy с ssl под дектоп работает, под андроид раньше работало сейчас оред что в отладке при коннекте SMTP не загружена библиотека SSL ранше использовал связку tidSMTP+tidMessage+IdSSLIOHandlerSocketOpenSSL c 465 портом Этото код работает в десктопе на яндексе под win рабоатает со внешними библиотекеми SSL типа libeay32.dll ssleay32dll Function TFormOFORMLENIE.mail(email:STRING):Boolean; var email:String; begin try Smtp.AuthType:=satDefault; SMTP.ReadTimeout:=10000; SMTP.Host := 'smtp.yandex.ru'; SMTP.Port := 465; SMTP.Username :=login; SMTP.Password :=pass; SMTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL1; SMTP.UseTLS:= utUseImplicitTLS; IdSSLIOHandlerSocketOpenSSL1.Destination := SMTP.Host+':'+IntToStr(SMTP.Port); IdSSLIOHandlerSocketOpenSSL1.Host := SMTP.Host; IdSSLIOHandlerSocketOpenSSL1.Port := SMTP.Port; IdSSLIOHandlerSocketOpenSSL1.DefaultPort := 0; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvTLSv1; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned; MailMessage.From.Name := 'Тест'; MailMessage.Subject := 'Тест: '+FormatDateTime('dd.mm.yy-hh:nn',Now) ; MailMessage.From.Address :='bossalex@ya.ru'; MailMessage.Recipients.EMailAddresses := email; MailMessage.Body.Text := MemoTXT.Text; try try SMTP.Connect;// орет нет библиотеки SSL - под win рабоатает со внешними библиотекеми SSL типа libeay32.dll ssleay32dll только не FMX на VCL к яндексу коннектися и отправляет письма, // есть еще libgcc_s_dw2-1.dll libwinpthread-1.dll msvcr100.dll правда не помню тоже какието библиотеки забыл для чего, надо в инете поковырять sleep(200); Application.ProcessMessages; SMTP.Send(MailMessage); ShowMessage('Письмо отправлено!'); MailMessage.MessageParts.Clear; except on e: Exception do begin sleep(200); ShowMessage('Письмо не отправлено!'); end; end; finally MailMessage.MessageParts.Clear; SMTP.Disconnect; end; except end; end;
  12. bossalex

    Segmentation fault (11)

    ни parent ни фига не помогает я уже задрался под андроид приложение лепить только под windows fmx както работает под android одно безумие я так думаю это 10,1 глючить так как по xe 8 таких глюков не было или я чтото упустил под android 6 надо попробовать под 4 function TFormKorzina.free_(n:String):Boolean; begin try {$IF DEFINED(iOS) or DEFINED(ANDROID)} SeekObject:=FindComponent(n); if SeekObject<>nil then begin TControl(SeekObject).DisposeOf; TControl(SeekObject):=nil; end; //freeandnil(TComponent(SeekObject));//.DisposeOf; {$ENDIF} {$IFDEF MSWINDOWS} SeekObject:=FindComponent(n); if SeekObject<>nil then begin TControl(SeekObject).Parent:=nil; TControl(SeekObject).Free; TControl(SeekObject):=nil; end; {$ENDIF} except end; end;
  13. bossalex

    Segmentation fault (11)

    в коде под андроид на Delphi FMX не могу решить проблему при повторном вызове окна методом Show убиваю компонент RectangleFon.DisposeOf; служащий контейнером других элементов затем заново его создаю RectangleFon:=TRectangle.Create(FormKorzina); потом при обращении к вновь созданным элементам таким же способом получаю ошибку Segmentation fault (11). В другой форме такой метод работает а тут ругается if FormKorzina.SumDostavki>0 then FormKorzina.LabelSumStoimost.Text:=floatToStr(FormKorzina.SumDostavki)+' рублей' на выполнении Скорее кудато лезу не туда в память а что делать не в курсе пробовал убивать freeandnill(RectangleFon); результат такой же, уже и дебагером проверял ругается то на фонт то на get в компоненте использовал данный метод убийства раньше freeandnill вроде проблем не было
×
×
  • Создать...