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

Humanoid

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

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

  • Посещение

Весь контент Humanoid

  1. При отправке почты понадобилось сохранить изображение и добавить его в аттач сообщения. Проблема свелась к правильному получению URI файла изображения. Самостоятельно не смог побороть. Обратился за помощью к krapotkin. Спасибо ему огромное за помощь. Ну и может быть кому то будет полезен сей опыт. Реализовано под D10.4 Sydney Вот решение. В параметрах проекта включаем "Secure File Sharing", при этом система автоматом создаст необходимые файлы для FilePropvider. Ну и собственно получение URI файла через TAndroidHelper.JFileToJURI procedure TfmDecoder.TestSendEmail(); {$IF DEFINED(ANDROID)} var lIntent: JIntent; lJRecipient: TJavaObjectArray<JString>; lURI: Jnet_Uri; lFileName: string; lFilePath: string; lFilePathFileName: string; Delim :Char; // Surf : TBitmapSurface; {$ENDIF} begin lFileName := Concat('MyFile' ,'.jpg') ; lFilePath := System.IOUtils.TPath.GetPublicPath ; lFilePathFileName := System.IOUtils.Tpath.Combine(lFilePath, lFileName) ; Surf:=TBitMapSurface.Create; SaveParams.Quality:=100; try Surf.Assign(imResult.Bitmap); // Save file TbitMapCodecManager.SaveToFile(lFilePathFileName, Surf, @SaveParams); finally Surf.Free; end; {$IF DEFINED(ANDROID)} lJRecipient:= TJavaObjectArray<JString>.Create(1); lJRecipient.Items[0]:= StringToJString('xxxxxxx@yyyy.com'); lIntent:= TJIntent.Create; lIntent.setType(StringToJString('message/rfc822')); lIntent.setAction(TJIntent.JavaClass.ACTION_SEND); lIntent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); lIntent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, lJRecipient); lIntent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString('Subj')); lIntent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString('Text')); lUri:= TAndroidHelper.JFileToJURI( TJFile.JavaClass.init(StringToJString(lFilePathFileName))); lIntent.putExtra(TJIntent.JavaClass.EXTRA_STREAM,TJParcelable.Wrap(lUri)) ; try TAndroidHelper.Activity.startActivity(lIntent); except on E: Exception do begin ShowMessage( E.Message); end; end; {$ENDIF} end;
  2. А какое решение? Как присоеденить изображение к мылу?
  3. Как оказалось я не один такой.
  4. Может кто то сталкивался с такой проблемой и знает решение? Не могу найти как включить форматер кода. Ни Ctrl+D не работает. Нет ни в контекстном меню, ни в настройках. Можно его как то "достать"? Сидней.
  5. Кроссплатформенное приложение.Картинка с камеры. На ней лежит ректангл. Вырезаю часть изображения по ректанглу. В винде все прекрасно. В андроид все смещается в зависимости от выбранного разрешения камеры. Вопрос: Не пойму как соотносятся физический, логический размер экрана, Размер самого изображения и размеры контейнера (в моем случае Layout) в котором лежит изображение, между собой. Т.е. не могу правильно получить координаты вырезки на изображении. Как соотнести координаты ректангла с координатами изображения? Вот последние изыскания в этом направлении. Так хотя бы по высоте не прыгает... Просветите плиз, как это все соотносится. type TScreenS = record w: Single; // logic H: Single; // logic wp: Single; // phisics Hp: Single; // phisics D: Single; // scale display end; var ScrSize: TScreenS; imgDest : TBitMap; SouRec, DisRec: TRectF; ..... ScrSize := GetScreenSize; Scale := imgCamera.Bitmap.Height / Layout1.Height; Ww := imgCamera.Bitmap.Width / Scale; // Ширина изображения приведенная к пропорции высоты tx := ((Layout1.Width - Ww) / 2); // Смещение изображения относительно контейнера по Х t:=0; // Смещение изображения относительно контейнера по Y {$IFDEF ANDROID} Scale := Scale * ScrSize.D; // Масштаб для андроида с учетом масштаба экрана {$ENDIF} imgDest.Width := Rectangle1.Width; imgDest.Height := Rectangle1.Height; // Исходная зона для копирования // Х = позиция ректангла по Х минус смещение относительно контейнера // Y = позиция ректангла по Y минус смещение относительно контейнера // конечная позиция то же плюс размеры ректангла SouRec := TRectF.Create((Rectangle1.Position.X - tx) * Scale, (Rectangle1.Position.Y - t) * Scale, (Rectangle1.Position.X + Rectangle1.Width - tx) * Scale, (Rectangle1.Position.Y + Rectangle1.Height - t) * Scale); // Для Андроид добавляю разницу по высоте между физическим и логическим размерами экрана {$IFDEF ANDROID} SouRec := TRectF.Create((Rectangle1.Position.X - tx) * Scale, (Rectangle1.Position.Y + (ScrSize.hp - ScrSize.h)) * Scale, (Rectangle1.Position.X + Rectangle1.Width - tx) * Scale, (Rectangle1.Position.Y + Rectangle1.Height + (ScrSize.hp - ScrSize.h)) * Scale); {$ENDIF} DisRec := TRectF.Create(0, 0, Rectangle1.Width * Scale, Rectangle1.Height * Scale); imgDest.Bitmap.SetSize(Round(Rectangle1.Width * Scale), Round(Rectangle1.Height * Scale)); imgDest.Bitmap.Canvas.BeginScene; imgDest.Bitmap.Canvas.DrawBitmap(imgCamera.Bitmap, SouRec, DisRec, 1); imgDest.Bitmap.Canvas.EndScene;
  6. Ноут hp probook 470 g3 i7 Диск форматирован. Установил Win 10 64Х Ставил Александрию на на системный диск. Результат тот же. SDK не доставился. Все компоненты в "Edit SDK" с желтыми треугольничками.... Т.е. SDK стал криво.. Переформатил все и вернул 10-ку Сидней. Подожду нормальной сборки 11-й версии.
  7. Благодарю за долготерпение. Есть еще ноут как раз под переустановку. Поставлю с нуля винду и Александрию. Подозреваю, что какой то "хвост" оставался от предыдущих установок. Хотя вроде чистил тщательно. Еще раз Спасибо.
  8. Дык объясняю. Понятно все! Галочки включены. Скачивание прошло. Только вот в 10-ке все ставало самостоятельно, а в 11 -й никак не желало становиться. При всех включенных галочках и вычищенном реестре, и удаленных всех воспоминаниях предыдущих установок. Только принудительно средствами Андроид студио пришлось установить рабочую часть СДК, а потом средствами этого СДК пришлось докачать и установить недостающие части СДК через командную строку. При этом параллельно понадобилось разобраться с Явой, потому как эта часть СДК без нее не запускалась. Т.е. не ясно было как установить СДК если студия его не желает ставить ни в какую. ))) Вот об этом и были мои вопросы.
  9. Ставил 11-ю четыре раза, с полной чисткой от всех хвостов Embarcadero, RAD, Studio, Android В различных вариантах. Только Делфи и С билдер. В полном составе со всеми платформами, Только Делфи и Андроид. Естественно с СДК, ДЖДК всегда с одинаковым результатом. Криво установленным СДК. Т.е. по путям своей установки стулия СДК не видит. 10-ка становилась всегда ровно и без проблем. Все видела. Вот это помогло исправить ситуацию.https://dannywind.nl/delphi/android-sdk-for-delphi-11-2-alexandria/ Ну и в некоторых описаниях установки Адроид студио. Т.е. самого СДК нет в виде архива или инсталятора, а ставится какая то часть, а потом с ее помощью докачивается сам СДК. В крайнем случае я так понял из всех своих танцев с бубном. И опять таки, перед установкой даже этой части надо установить Яву, И именно так у меня и получилось. Об этом и спрашивал. Это и подразумевал под платформой. Еще раз благодарю за участие и извиняюсь за то что отобрал у Вас время. С уважением
  10. Мда... Я еще и косноязычен... ((( Как поставить Дельфи я знаю. Я имел в виду по установке среды для андроид. Т.е. Что для этого надо, где взять, в какой последовательности ставить... Ява, СДК, ... Чтото еще... Это имел в виду. Из "коробки" ставил начиная с 7-й версии. Эмбаркодеро ставил с 10 Рио. Но, тогда интересовал только Делфи. Когда понадобился андроид, поставил Сидней. Все стало из коробки. Даже не задумывался как выглядит платформа мобильного. А вот когда решил установить Александрию, платформа стала криво. И тогда задался вопросом, как она устроена. И как ее ставить и настраивать... Как то так. В общем еще раз СПАСИБО! И может подскажете, что от меня хочет при попытке загрузить в телефон. Приложение с таким именем впервые в телефон. И как и где указать сертификат и где его взять? Извините что нагрузил как баржу утюгами.
  11. Пробовал так... При попытке охранения ругается и сбрасывает все мои потуги. Ткните еще носом плиз. При попытке загрузить в телефон приложения получаю такую ошибку. Понимаю, что надо где то ручками указать как его собирать. И надо гдето, как то прописать сертификат... Ткните носом где и как это сделать. Хотя, может это еще и от криво поставленного СДК. Ну тут все от незнания. Все на ощупь. Потому и задаю глупые вопросы. Предварительно, стараюсь искать ответы. Но, если уж совсем засада, спрашиваю. Я не сильно представляю себе архитектуру этого всего хозяйства. Кто на ком стоит Ява, Андроид, ХМЛ, Чтото надо руками указывать.... Я программировал десктоп приложения с базами данных, там мне все понятно. А это поле пока что все в тумане. Не обессудьте за глупые вопросы. Просто Вам ответить походя, а мне многие часы и даже дни поиска ответа. Еще раз благодарю за помощь
  12. Спасибо что уделили время. Скопировал СДК из Андроид Студия, перевыбрал настройки СДК. Телефоны увидел.
  13. Ставил и на системный диск, проблема та же. Это уже третий подход к Александрии. Поработаю немного в Сиднее, нахожу новую инструкцию по установке. Сношу и пытаюсь ставить 11. На системном лучше иметь свободное место, потому поставил на F: Ну видимо село я, не асфальтированное... Ставил и SDK и JDK и NDK из разных источников и в разных ипостасях и с инсталеров и просто из архивов... Ничего из того , что просит RAD Studio в этих каталогах не нашел... В одном из пакетов был только adb.exe. Винда телефоны прекрасно видит и файл менеджерами я спокойно их юзаю. Телефоны все в режиме разработчика и в режиме отладки по ЮСБ. Мне б убогому пошаговый букварь... Как установить, откуда взять...
  14. Я прошу прощения, я чайник в андроидах, и мобильных приложениях. Но, стоял Сидней 10.4 Все прекрасно видел, разные телефоны подключал, совсем дремучий Самсунг, ХТС, Ксяоми... Переставил 11.3 и вот такая картинка с SDK Пытался ставить по инструкциям с разных сайтов... Полные дрова. Может есть какойто пакет автоматом ставящий все это для андроида? Или вернуться все же к 10ке?
  15. Подскажите, как перевести координату экрана в координату (пикселя) рисунка , если разрешение рисунка отличается от разрешения экрана?
  16. Поставил. Как то криво стал. Мобилу не видит. СДК похоже урезаный...
  17. Программа под смартфон. На форме лежит Layout, на нем Image На картинке, посредине лежит Rectangle. Когда я пытаюсь вырезать из картинки участок ограниченный Rectangle, выходное изображение не соответствует границам и имеет искаженный масштаб. Ка можно привести это в норму? var bmpS, bmpD: TBitMap; iRectS: Trectf; HD, wD: integer; iRectD: Trectf; Scalex, scaley: real; begin Scalex := 1; scaley := 1; bmpS := imgCameraView.Bitmap; iRectS := Trectf.Create(TPointF.Create(Ramka.Position.X * Scalex, Ramka.Position.Y * scaley), TPointF.Create((Ramka.Position.X + Ramka.Width) * Scalex, (Ramka.Position.Y + Ramka.Height) * scaley)); wD := Max(0, Round(Ramka.Width)); HD := Max(0, Round(Ramka.Height)); bmpD := TBitMap.Create(wD, HD); iRectD := Trectf.Create(0, 0, Ramka.Width, Ramka.Height); Code.Visible := True; if bmpD.Canvas.BeginScene then try bmpD.Canvas.DrawBitmap(bmpS, iRectS, iRectD, 1); bmpD.Canvas.EndScene; Code.Bitmap.assign(bmpD); finally bmpD.Free; end;
  18. При запуске приложения через шнурок в режиме отладки, инсталится на мобилу и при инстале дает вот такую ошибку. Переименовывал приложение, все равно картина не меняется. Объясните нубу что я неправильно делаю.
×
×
  • Создать...