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

mestok

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

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

  • Посещение

Сообщения, опубликованные mestok

  1. 6 часов назад, OnePeople сказал:
     uses
    ...
    type
        TGnnsStatusCallbackDelegate = class(TJavaLocal, JGnssStatusCallbackDelegate)
      private
        FCallback: JGnssStatusCallback;
      protected
      public
        procedure onFirstFix(ttffMillis: Integer); cdecl;
        procedure onSatelliteStatusChanged(status: JGnssStatus); cdecl;
        procedure onStarted; cdecl;
        procedure onStopped; cdecl;
      public
        constructor Create();
      end;
    ...
    var
    GnnsStatusCallbackDelegate := TGnnsStatusCallbackDelegate
    
    implementation
    
    procedure TForm1.FormCreate(Sender: TObject);
    
    begin
    GnnsStatusCallbackDelegate := TGnnsStatusCallbackDelegate.Create;
    end;
    
    
    constructor TGnnsStatusCallbackDelegate.Create;
    begin
      inherited Create;
      FCallback := TJGnssStatusCallback.JavaClass.init(TAndroidHelper.Context, Self);
    end;
    
    procedure TGnnsStatusCallbackDelegate.onFirstFix(ttffMillis: Integer);
    begin
     //
    end;
    
    procedure TGnnsStatusCallbackDelegate.onSatelliteStatusChanged(
      status: JGnssStatus);
      var
      satelliteCount, usedCount: Integer;
    begin
     TTask.Run(procedure
     var
     i: Integer;
       begin
         try
          
           usedCount:= 0;
           satelliteCount := status.getSatelliteCount();
           for i := 0 to satelliteCount - 1 do
              if status.usedInFix(i) then
                 usedCount := usedCount + 1;
           TThread.Synchronize(nil, procedure
             begin
               Form1.tqsSatMax.Text := satelliteCount.ToString;
               Form1.tqsSat.Text := usedCount.ToString;
               Form1.tnSat.Text := usedCount.ToString;
             end);
          except
           Form1.LogCAAdd('TGnnsStatusCallback except');
          end;
       end);
    end;
    
    procedure TGnnsStatusCallbackDelegate.onStarted;
    begin
     //
    end;
    
    procedure TGnnsStatusCallbackDelegate.onStopped;
    begin
     //
    
    end;
    
    

     

    Спасибо! Работает!

  2. JGnssStatus в модуле Androidapi.JNI.GnssStatusCallback.pas был не определен... - я добавил. Но правильно, или нет - вопрос.

    При попытке выполнить нижеуказанный код вылетает исключение "interface not supported". Что я делаю не так?

    Код формы:

    unit Unit1;
    interface
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
      FMX.Controls.Presentation,Androidapi.JNI.GnssStatusCallback, System.Android.Sensors, System.Sensors,Androidapi.JNI.Location,
      FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNIBridge, Androidapi.JNI.App,
      Androidapi.Helpers, Androidapi.JNI.JavaTypes, System.Sensors.Components;
    type
      TForm7 = class(TForm)
        CornerButton1: TCornerButton;
        Memo1: TMemo;
    ×
    unit Unit1;
        LocationSensor1: TLocationSensor;
        procedure CornerButton1Click(Sender: TObject);
      private
      public
      end;
    var
      Form7: TForm7;
    implementation
    {$R *.fmx}
    type
      TMyGnssStatusCallbackDelegate = class(TJGnssStatusCallbackDelegate)
      public
        procedure onFirstFix(ttffMillis: Integer); cdecl;
        procedure onSatelliteStatusChanged(status: JGnssStatus); cdecl;
        procedure onStarted; cdecl;
        procedure onStopped; cdecl;
      end;
    procedure TMyGnssStatusCallbackDelegate.onFirstFix(ttffMillis: Integer);
    begin
      //...
    end;
    procedure TMyGnssStatusCallbackDelegate.onSatelliteStatusChanged(status: JGnssStatus);
    begin
      // Событие изменения статуса спутников
    end;
    procedure TMyGnssStatusCallbackDelegate.onStarted;
    begin
      // Событие запуска отслеживания GNSS
    end;
    procedure TMyGnssStatusCallbackDelegate.onStopped;
    begin
      // Событие остановки отслеживания GNSS
    end;
    procedure TForm7.CornerButton1Click(Sender: TObject);
    var
      LocationManager: JLocationManager;
      LocationProviders: JList;
      GnssStatusCallbackClass: JGnssStatusCallbackClass;
      GnssStatusCallback: JGnssStatusCallback;
      i: Integer;
    begin
      try
        LocationManager := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.LOCATION_SERVICE) as JLocationManager;
        LocationProviders := LocationManager.getProviders(True);
        for i := 0 to LocationProviders.size - 1 do
        begin
          if (LocationProviders.get(i) as JString).equals(TJLocationManager.JavaClass.GPS_PROVIDER) then
          begin
            GnssStatusCallbackClass := TJavaGenericImport<JGnssStatusCallbackClass, JGnssStatusCallback>.JavaClass;
            GnssStatusCallback := GnssStatusCallbackClass.init(TAndroidHelper.Context, TMyGnssStatusCallbackDelegate.Create);
            Exit;
          end;
        end;
      except
        on E: Exception do
        begin
          Memo1.Lines.Add('Error checking GNSS status: ' + E.Message);
        end;
      end;
    end;
    end.

     

    Androidapi.JNI.GnssStatusCallback.zip

  3. Добрый день!

    Не подскажите, кто если сталкивался?...

    Пытаюсь получить число спутников на Android`е. Прога "падает". Под Win (если uses System.Android.Sensors заменить на System.Win.Sensors) работает. Может есть у кого решение?

    Код модудя:

    uses

    System.Android.Sensors, System.Sensors;

    type

    TMyPlatformGpsStatus = class(TPlatformGpsStatus)
    public
    class function GetGpsStatusImplementer: TGpsStatusClass; override;
    end;
    { TMyPlatformGpsStatus }

    class function TMyPlatformGpsStatus.GetGpsStatusImplementer: TGpsStatusClass;
    begin
    Result := inherited;
    end;

     

    По клику баттона:

    Label2.Text:=IntToStr(TMyPlatformGpsStatus.GetGpsStatusImplementer.SatelliteCount);

  4. В фалах проекта, в папке res нет файла с именем color. Или я его не там ищу?

    Добавил свой файл color.xml через Deployment в папку res\values. В файле код: <?xml version="1.0" encoding="utf-8"?>
    <resources xmlns:android="http://schemas.android.com/apk/res/android">
        <color name="black">#6156ed</color>
    </resources>

    Результата нет.

  5. Здравствуйте товарищи!

    Есть вопрос - может кто сталкивался...

    Как в "splash_image_def", в  теге <item android:drawable="@android:color/black" />"  установить "свой" цвет, по типу rgb(100,100,120), или "#0066cc" знает кто? Пробовал "<item android:drawable="@android:color/#910012"/>" - не компилирует...

×
×
  • Создать...