本文整理自网络,侵删。
implementation uses androidapi.jni.JavaTypes, androidapi.jni.Location, FMX.helpers.android, androidapi.jni.GraphicsContentViewText, androidapi.jnibridge; // context在android的content.context包 // ILocalObject在androidapi.jnibridge里 // sharedActivitycontext在fmx.helpers里 {$R *.fmx} // 用android的地理GPS定位函数 procedure TForm1.Button1Click(Sender: TObject); const LGoogleMapURL: string = 'https://maps.google.com/maps?q=%s,%s&output=embed'; var LocationManagerService: JObject; Location: JLocation; fLocationManager: JLocationManager; Lat: string; Lon: string; Alt: string; begin if not assigned(fLocationManager) then begin //获得Java对象 [delphi] view plain copy LocationManagerService := sharedActivitycontext.getSystemService (TJcontext.JavaClass.LOCATION_SERVICE); // 获得对象的java实例 [delphi] view plain copyfLocationManager := tjlocationmanager.Wrap ((LocationManagerService as ILocalObject).GetObjectID); end; Java的方法。 [delphi] view plain copy // use the gps provider to get current lat, long and altitude Location := fLocationManager.getLastKnownLocation (tjlocationmanager.JavaClass.GPS_PROVIDER); lat:=format('%2.6f',[location.getLatitude]); lon:=format('%2.6f',[location.getLongitude]); Alt := format('%2.6f',[location.getAltitude]); edit1.Text:=lat; edit2.Text:=lon; WebBrowser1.Navigate(Format(LGoogleMapURL, [Lat, Lon])); end; end. 通过JNI调用Java服务,基本就是这个步骤。
相关阅读 >>
更多相关阅读请进入《Delphi》频道 >>