下面的程序,可以实现Android下获取GNSS的NMEA0183数据:

unit utAndroidNmea;interfaceuses Androidapi.JNIBridge, Androidapi.JNI.App, Androidapi.NativeActivity, Androidapi.JNI.JavaTypes, Androidapi.JNI.Location;type  TonNmeaReceived=procedure(timestamp: Int64; nmea: String) of Object;  TJGpsStatus_NmeaListener = class(TJavaGenericImport<JGpsStatus_NmeaListenerClass, JGpsStatus_NmeaListener>) end;  TNmeaProvider=class(TJavaLocal,JGpsStatus_NmeaListenerClass, JGpsStatus_NmeaListener)  protected    FLocationManager:JLocationManager;    FOnNmeaReceived:TonNmeaReceived;  public    procedure onNmeaReceived(timestamp: Int64; nmea: JString); cdecl;  public    constructor Create;    destructor Destroy;override;    function Run:Boolean;    property OnNmeaLineReceived:TOnNmeaReceived read FOnNmeaReceived write FOnNmeaReceived;  end;implementationuses Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText,  FMX.Helpers.Android,FMX.Platform.Android, System.SysUtils, System.Android.Sensors;{ TNmea }constructor TNmeaProvider.Create;begin  inherited Create;end;destructor TNmeaProvider.Destroy;begin  if Assigned(FLocationManager) then FLocationManager.removeNmeaListener(Self );  inherited;end;procedure TNmeaProvider.onNmeaReceived(timestamp: Int64; nmea: JString); cdecl;begin  if Assigned(FOnNmeaReceived) then FOnNmeaReceived(timestamp, JStringToString(nmea));end;function TNmeaProvider.Run:Boolean;begin  CallInUiThread(procedure  var    LocationService: JObject;  begin    LocationService := SharedActivityContext.getSystemService(TJContext.JavaClass.LOCATION_SERVICE);    FLocationManager := TJLocationManager.Wrap((LocationService as ILocalObject).GetObjectID);    FLocationManager.addNmeaListener(Self);  end);end;end.

用法:

在Form中添加一个TLocationSensor, 设置Active:=True;

然后定义OnNmeaReceive方法:

procedure TForm1.OnNmeaReceived(timestamp: int64; nmeasentence: String);begin  FStream.Write(PChar(nmeasentence)^, Length(nmeasentence)*sizeof(Char));end;

更多相关文章

  1. android.inputmethodservice.KeyboardView 自定义键盘 字体大小
  2. Android(安卓)ApiDemos示例解析(167):Views->Layouts->TableLayo
  3. android中的自定义控件
  4. android布局layout中的一些属性
  5. android布局layout中的一些属性
  6. android粗略获得程序运行时间的方法
  7. android定义可以被其他程序调用的activity
  8. 自定义控件其实很简单2/3
  9. Android(安卓)studio 串口通信(动态获取串口)

随机推荐

  1. android 时间
  2. android 单元测试, 以sqlite测试为例
  3. Android(安卓)中broadcast 注册过程解析
  4. Android(安卓)UI设计
  5. 2011.06.07(2)——— android 调试android
  6. Android之Activity之间的数据通信方式大
  7. android中statusbar高度的问题
  8. android 应用 体会
  9. google迈向IoT的开端——推出Android(安
  10. Android(安卓)Styles and Themes