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

unit utAndroidNmea;

interface

uses 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; implementation uses 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;

Delphi获取Android下GPS的NMEA 0183数据的更多相关文章

  1. Delphi获取目录下所有文件名

    //获取一个文件夹下的所有文件 //不包括文件夹里面的文件 //ListBox1.Items:= searchfile('Z:\'); //注意,path后面要有'\'; function  Sear ...

  2. Delphi在Android下实现BroadcastReceiver功能(举例在Delphi下获取USB外设拔插消息)

    在Android里,用java通过实现BroadcastReceiver接口,就可以获得Intent消息.可是Delphi程序不能直接实现JBroadcastReceiver,如何能够实现类似Java ...

  3. Delphi在Android下使用Java库

    本文将以Android的USB串口通讯库为例,介绍Delphi如何在Android中使用Java的库. USB串口通讯库地址: https://github.com/felHR85/UsbSerial ...

  4. Delphi在Android下通过WiFI进行调试

    如果我们需要调试USB程序且Android设备只有一个USB口,那么可以通过WiFi来调试程序,这样USB口就可以用了. 大致步骤如下: 1.在有root权限的Android设备里安装“Wifi AD ...

  5. Android下用Sqlite数据库存储数据

    第一步:  写个类 ,继承 SQLiteOpenHelper public class MyDatabaseOpenHelper extends SQLiteOpenHelper { } 第二步:   ...

  6. Android下基于PCM的音频渲染

    环境准备 请按照我之前的文章-Android下基于SDL的位图渲染,安装必要的开发环境. 实践篇 这里主要参考Beginning SDL 2.0(6) 音频渲染及wav播放,只不过将源从WAV文件改成 ...

  7. Delphi XE7 GPS控件android下的新变化

    Delphi XE7 GPS控件的Android新变化 GPS控件的Accuracy可以起作用了,Accuracy>0时:      1--100:ACCURACY_HIGH  101--500 ...

  8. Android Service获取当前位置(GPS+基站)

    需求详情:1).Service中每隔1秒执行一次定位操作(GPS+基站)2).定位的结果实时显示在界面上(要求得到经度.纬度)技术支持:1).获取经纬度通过GPS+基站获取经纬度,先通过GPS来获取, ...

  9. [置顶] xamarin android使用gps定位获取经纬度

    看了文章你会得出以下几个结论 1.android定位主要有四种方式GPS,Network(wifi定位.基站定位),AGPS定位 2.绝大部分android国产手机使用network进行定位是没有作用 ...

随机推荐

  1. 自动化测试基础篇--Selenium unittest简介

    一.什么是unittest unittest是Python单元测试框架,类似于JUnit框架. unittest中有4个重要的概念:test fixture, test case, test suit ...

  2. December 22nd 2016 Week 52nd Thursday

    The best hearts are always the bravest. 心灵最高尚的人,往往也是最勇敢的人. Keep conscience clear, don't let too many ...

  3. 51nod 1403 有趣的堆栈

    题目看这里 主要是能分析出这样一个结论: 每个pop根据这个元素上面被压过多少个元素,可以知道他是在前面哪个pop之前被push的. 根据这些信息可以求得每个pop到上一个pop之间有多少个push, ...

  4. 阿里云 CentOS 镜像和 EPEL 源

    配置阿里云网络yum源 阿里云镜像源地址http://mirrors.aliyun.com/ 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.re ...

  5. Entity Framework:代码优先

    一.代码优先Code First EF6支持Oracle ODT 12C Release 3 (net4.5) DataModel(类)-->生成数据库DB 或 存在的数据库DB-->生成 ...

  6. myeclipse 2013破解注册图文教程

    以下这个试过有效 http://www.33lc.com/article/10792.html

  7. ARM汇编之MOV指令

    http://blog.csdn.net/lsywk/article/details/8799837 一.指令格式 MOV{条件}{S}  目的寄存器,源操作数 二.指令详解 MOV指令可完成从另一个 ...

  8. BZOJ4987:Tree(树形DP)

    Description 从前有棵树. 找出K个点A1,A2,…,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小. Input 第一行两个正整数n,k,表示数的顶点数和需要 ...

  9. 1968. [AHOI2005]约数研究【数论】

    Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input ...

  10. P3174 [HAOI2009]毛毛虫

    题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫了(图 2 ). 输入输出格 ...