Delphi获取Android下GPS的NMEA 0183数据
下面的程序,可以实现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数据的更多相关文章
- Delphi获取目录下所有文件名
//获取一个文件夹下的所有文件 //不包括文件夹里面的文件 //ListBox1.Items:= searchfile('Z:\'); //注意,path后面要有'\'; function Sear ...
- Delphi在Android下实现BroadcastReceiver功能(举例在Delphi下获取USB外设拔插消息)
在Android里,用java通过实现BroadcastReceiver接口,就可以获得Intent消息.可是Delphi程序不能直接实现JBroadcastReceiver,如何能够实现类似Java ...
- Delphi在Android下使用Java库
本文将以Android的USB串口通讯库为例,介绍Delphi如何在Android中使用Java的库. USB串口通讯库地址: https://github.com/felHR85/UsbSerial ...
- Delphi在Android下通过WiFI进行调试
如果我们需要调试USB程序且Android设备只有一个USB口,那么可以通过WiFi来调试程序,这样USB口就可以用了. 大致步骤如下: 1.在有root权限的Android设备里安装“Wifi AD ...
- Android下用Sqlite数据库存储数据
第一步: 写个类 ,继承 SQLiteOpenHelper public class MyDatabaseOpenHelper extends SQLiteOpenHelper { } 第二步: ...
- Android下基于PCM的音频渲染
环境准备 请按照我之前的文章-Android下基于SDL的位图渲染,安装必要的开发环境. 实践篇 这里主要参考Beginning SDL 2.0(6) 音频渲染及wav播放,只不过将源从WAV文件改成 ...
- Delphi XE7 GPS控件android下的新变化
Delphi XE7 GPS控件的Android新变化 GPS控件的Accuracy可以起作用了,Accuracy>0时: 1--100:ACCURACY_HIGH 101--500 ...
- Android Service获取当前位置(GPS+基站)
需求详情:1).Service中每隔1秒执行一次定位操作(GPS+基站)2).定位的结果实时显示在界面上(要求得到经度.纬度)技术支持:1).获取经纬度通过GPS+基站获取经纬度,先通过GPS来获取, ...
- [置顶]
xamarin android使用gps定位获取经纬度
看了文章你会得出以下几个结论 1.android定位主要有四种方式GPS,Network(wifi定位.基站定位),AGPS定位 2.绝大部分android国产手机使用network进行定位是没有作用 ...
随机推荐
- Apache的主要目录和配置文件详解
一.Apache 主要配置文件注释Apache的主配置文件:/etc/httpd/conf/httpd.conf默认站点主目录:/var/www/html/Apache服务器的配置信息全部存储在主配置 ...
- vue从安装到初始化项目
- 企业级Apache详解2
http_conf主配置说明 root@lamp01 apache]# grep -Ev "#|^$" conf/httpd.conf DocumentRoot "/us ...
- Maven编译Java程序配置
Hive 需要在工程里添加的Jar包: hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar $HIVE_HOME/lib/hive-exe ...
- mac使用指南--软件安装部分
最近因为开发需要,换了个mac,发现和Windows下面的操作和习惯真是千差万别啊,在这里记录一下,有需要的也可以参考一下. 安装前强烈建议根据个人习惯设置好触控板!!!什么单击双击选中拖拽的统统设好 ...
- Django F对象的使用
概念 class FF()是代表模型字段的值,也就是说对于一些特殊的字段的操作,我们不需要用Python把数据先取到内存中,然后操作,在存储到db中了. 场景 例1:我们有个统计点击量的字段,每次更新 ...
- 2018-2019-2 网络对抗技术 20165322 Exp5 MSF基础应用
2018-2019-2 网络对抗技术 20165322 Exp5 MSF基础应用 目录 实验内容与步骤 一个主动攻击实践 MS08-067(失败) ms17_010_psexec(成功且唯一) 一个针 ...
- Django创建基本流程
Django创建基本流程 1.创建工程:django-admin startproject 工程名 2.创建应用:python manage.py startapp 应用名 3.激活项目:修改sett ...
- [19/04/14-星期日] 网络编程_java.net包(InetAddress类、InetSocketAddress类、URL类)
一.概念 Java为了可移植性,不允许直接调用操作系统,而是由java.net包来提供网络功能.Java虚拟机负责提供与操作系统的实际连接. InetAddress 作用:封装计算机的IP地址和 ...
- indexzero/http-server-2-使用
所以在ethereumjs-vm/examples/run-transactions-simple例子中要怎么使用http-server 1.首先在ethereumjs-vm/examples/run ...