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

Humanoid

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

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

  • Посещение

  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ке?
×
×
  • Создать...