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