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

M1shQa

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

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

  • Посещение

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

  1. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в [DELPHI FMX Android] [6.0] Не удается загрузить SSL библиотеку   
    все дело в TidHTTP (Indy) - его нельзя использовть под Андроидом
  2. Like
    M1shQa отреагировална Rusland в Как получить информацию и параметры GPS   
    Работал когда-то. В то время на Seattle делал
  3. Like
    M1shQa отреагировална sinuke в Как получить информацию и параметры GPS   
    в качестве предположения...
    а на какой версии Андройд работает/не работает? в 6.0 и выше нужны отдельные права на небезопасные разрешения. может поэтому не хочет?
    узнать наличие разрешений и запросить их заново можно в блоге Andrey Efimov -  http://delphifmandroid.blogspot.com.by (у меня перестал открываться, более точную ссылку дать не могу)
  4. Like
    M1shQa отреагировална Rusland в Как получить информацию и параметры GPS   
    Какая версия Delphi?
    PS. От Indy компонентов лучше отказаться
  5. Like
    M1shQa отреагировална Andrey Efimov в [Статья][Android] Автозапуск службы после рестарта ОС   
    В Java файле всё правильно прописали?
    Можно, но тогда нужно добавить jar-файл.
    В вашем случае - нет.
    На Токио не проверялось. Статья написана для Seattle, но 100% работает на Berlin (только вчера реализовывал данную функцию в новом приложении), а вот Токио пока в топку.
  6. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в Отправка данных по http в фоновом режиме   
    полезно к прочтению
     
  7. Like
    M1shQa получил реакцию от Олег Киреев в Проверка подключения к интернету на мобильном устройстве   
    Простой способ который у меня на некоторых приложухах стоит 
     
  8. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в Текст с картинками и скроллингом   
    я бы сделал через браузер и html документ, как раз подойдёт для вашей задачи
  9. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в мониторинг gps, сети и батареи в фоне   
    1) нужно пилить сервис, а вариант с AlarmManager не подойдёт? только не для приложения, а для сервиса
    2) если особо не заморачиваться с БД (сразу отсылать на сервер или sqlLite), то можно в JSON
    3) для сервисов да и вообще у ембы есть нативные реализации T(Net)HTTPClient
  10. Like
    M1shQa отреагировална Pax Beach в Проблемы с сервисом   
    Пример работы таймера в сервисе.
  11. Like
    M1shQa получил реакцию от Равиль Зарипов (ZuBy) в ListBox Item style (картинка на заднике и ее растяжка).   
    Блин за 2 секунды сделал сейчас и все получилось, огромное Вам спасибо! Все го то надо было сменить TimageView на Timage  Эх балбес)
  12. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в ListBox Item style (картинка на заднике и ее растяжка).   
    использовать TImage
  13. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в ListBox Item style (картинка на заднике и ее растяжка).   
    1) кидаем TListBox
    2) ПКМ по LB -> Add Item -> TListBoxItem
    3) ПКМ по TListBoxItem - > Edit Default Style
    4) В Tool Panel ищём TImage, бросаем в стиль ListBoxItemstyle
    5) выставляем Align, выключаем HitTest
    6) загружаем картинку
    7) желательно поменять StyleName
    8) Закрываем, сохраняем
    9) для нужных Item'ов выставляем StyleLookup
    10) Profit!
  14. Like
    M1shQa получил реакцию от Равиль Зарипов (ZuBy) в Текст на битмапе   
    Черт и выглядит круто, спасибо!)
  15. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в Текст на битмапе   
    procedure TForm1.Button1Click(Sender: TObject); var aBitmap: TBitmap; aRectF: TRectF; begin aBitmap := TBitmap.Create; aBitmap.SetSize(trunc(Image1.Width), trunc(Image1.Height)); aBitmap.Assign(Image1.Bitmap); aBitmap.Canvas.BeginScene; aRectF := RectF(aBitmap.Width - 100, aBitmap.Height - 25, aBitmap.Width, aBitmap.Height); aBitmap.Canvas.Fill.Color := $B4FFFFE5; aBitmap.Canvas.FillRect(aRectF, 0, 0, AllCorners, 1); aBitmap.Canvas.Font.Size := 18; aBitmap.Canvas.Fill.Color := TAlphaColorRec.Black; aBitmap.Canvas.FillText(aRectF, DateToStr(Date), false, 1, [], TTextAlign.Center, TTextAlign.Center); aBitmap.Canvas.EndScene; Image1.Bitmap.Assign(aBitmap); aBitmap.Free; end;  

  16. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в Текст на битмапе   
    да конечно можно, вы просто не указали цвет
    нужно запомнить если метод начинается на Fill..., значит нужно менять цвет через 
    Image.Bitmap.Canvas.Fill.Color := TAlphaColorRec.Black; если на Draw..., то 
    Image.Bitmap.Canvas.Stroke.Color := TAlphaColorRec.Black;
  17. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в Текст на битмапе   
    как-то так
    Image.Bitmap.Canvas.BeginScene; Image.Bitmap.Canvas.FillText(RectF(0,0,100,100), 'Date', false, 1, [], TTextAlign.Center, TTextAlign.Center); Image.Bitmap.Canvas.EndScene;
  18. Like
    M1shQa получил реакцию от Евгений Корепов в Как вытащить список из JSON со значениями   
    Огромное спасибо, Вы меня сильно выручили!
  19. Like
    M1shQa отреагировална Евгений Корепов в Как вытащить список из JSON со значениями   
    Вот получение данных с type=1:
    function TFormMain.ParseJSONArray(AJSONString : String) : TStringList; // для удобства функция возвращает TStringList, так будет проще закинуть результат в Memo Var AJSONArray : TJSONArray; AJSONValue : TJSONValue; I : Integer; begin Result:=TStringList.Create; // Создаем результат фозвращаемый функцией AJSONArray:=TJSONArray(TJSONObject.ParseJSONValue(AJSONString)); // Зная что на входе TJSONArray парсим его, пропуская парсинг TJSONObject if Not Assigned(AJSONArray) then // Если парсинг удался, то AJSONArray<>Nil Exit; for I := 0 to AJSONArray.Count-1 do // Работаем как с обычным массивом begin if AJSONArray.Items[I].TryGetValue('type',AJSONValue) Then // Получаем type if Not AJSONValue.Value.Equals('1') then // если type<>1 переходим на следующую итерацию (код ниже пропускается) Continue; if AJSONArray.Items[I].TryGetValue('number',AJSONValue) Then //Здесь используем полезную функцию TryGetValue, защищая себя от некорректных или отсутствующих 'number' Result.Add(AJSONValue.Value); // Если успешно, то добавляем полученную строку в результирующий StringList end; end; "адресс вайолэйшн" потому что код с  XSuperObject не безопасный, будет работать до первой ошибки в входных данных, далее крах приложения.
  20. Like
    M1shQa отреагировална Евгений Корепов в Как вытащить список из JSON со значениями   
    Для работы с JSON в Delphi есть все что нужно - штатная библиотека System.JSON. Быстрая и удобная, работать с ней одно удовольствие. Вот накидал проект, ваш JSON загружаю из файла.
    unit UnitFormMain; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.IOUtils, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo, System.JSON; type TFormMain = class(TForm) Memo: TMemo; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } function ParseJSONArray(AJSONString : String) : TStringList; end; var FormMain: TFormMain; implementation {$R *.fmx} procedure TFormMain.FormCreate(Sender: TObject); Var AJSONString : String; begin AJSONString:=TFile.ReadAllText('D:\Embarcadero\Projects\Test\test062 JSON Array\input.json'); // Загружаем JSON в строку Memo.Lines.Assign(ParseJSONArray(AJSONString)); // Вызываем функцию парсинга, если все удачно - Memo заполнится значениями, если нет - останется пустым. end; function TFormMain.ParseJSONArray(AJSONString : String) : TStringList; // для удобства функция возвращает TStringList, так будет проще закинуть результат в Memo Var AJSONArray : TJSONArray; AJSONValue : TJSONValue; I : Integer; begin Result:=TStringList.Create; // Создаем результат фозвращаемый функцией AJSONArray:=TJSONArray(TJSONObject.ParseJSONValue(AJSONString)); // Зная что на входе TJSONArray парсим его, пропуская парсинг TJSONObject if Not Assigned(AJSONArray) then // Если парсинг удался, то AJSONArray<>Nil Exit; for I := 0 to AJSONArray.Count-1 do // Работаем как с обычным массивом if AJSONArray.Items[I].TryGetValue('number',AJSONValue) Then //Здесь используем полезную функцию TryGetValue, защищая себя от некорректных или отсутствующих 'number' Result.Add(AJSONValue.Value); // Если успешно, то добавляем полученную строку в результирующий StringList end; end. P.S. работает под всеми платформами. Скорость для такого небольшого файла JSON можно принять за мгновенную даже на стареньких телефонах. Мне вот тут один сервис отдавал JSON размером в 6 мегабайт. Онлайн парсер http://pro.jsonlint.com/ которым удобно смотреть структуру зависал наглухо. А в Delphi все отлично и быстро работало
  21. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в Как вытащить список из JSON со значениями   
    Я отказался от родного в пользу XSO, посмотрите как компактно выглядет код который я привел выше. И стабильно и читабельно, скорость тоже на высоте
  22. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в Как вытащить список из JSON со значениями   
    если использовать XSuperObject
    var aJSON: string; xJS, xObj: ISuperObject; j: integer; begin xJS := SO(aJSON); // данные with xJS.A['data'] do // имя массива begin for j := 0 to length - 1 do begin xObj := O[j]; TStringList.Add(xObj.S['number']); // собираем в стринг лист нужное поле end; end; end;  
  23. Like
    M1shQa получил реакцию от Alex Bozhko в Проверка подключения к интернету на мобильном устройстве   
    Простой способ который у меня на некоторых приложухах стоит 
     
  24. Like
    M1shQa отреагировална Равиль Зарипов (ZuBy) в Как заставить LocationSensor ловить координаты используя ТОЛЬКО GPS?   
    можно не разрешать приложению работать пока пользователь не включит высокую точность по GPS
    function IsGPS_high_accuracy: Boolean; // uses AndroidApi.Helpers, AndroidApi.JNI.Provider; var Provider: string; LocationMode: integer; begin Result := false; {$IFDEF ANDROID} if TOSVersion.Check(4, 4) then begin LocationMode := TJSettings_Secure.JavaClass.getInt(TAndroidHelper.Context.getContentResolver, TJSettings_Secure.JavaClass.LOCATION_MODE); Result := LocationMode <> TJSettings_Secure.JavaClass.LOCATION_MODE_HIGH_ACCURACY; end else begin Provider := JStringToString(TJSettings_Secure.JavaClass.GetString(TAndroidHelper.Context.getContentResolver, TJSettings_system.JavaClass.LOCATION_PROVIDERS_ALLOWED)); Result := (Pos('gps', Provider) > 0); end; {$ENDIF} end;  
  25. Like
×
×
  • Создать...