当前位置:首页 » 编程软件 » 编程gps

编程gps

发布时间: 2022-09-21 03:05:45

❶ 手机android编程,如何调用GPS定位模块

GPS调用是Android系统中非常重要的一个功能,可以为手机app提供与位置相关的所有功能。
Android编程时,对于GPS模块有一个专门的管理类,称为:LocationManager,用来管理与GPS定位服务相关的所有接口。如果您还是不能实现GPS定位模块的调用,可以到SKYLAB网站上了解下GPS模块的相关资料,希望能够帮助到您。

❷ android编程怎么把GPS坐标转换为百度地图坐标

/**
* 标准的GPS经纬度坐标直接在地图上绘制会有偏移,这是测绘局和地图商设置的加密,要转换成网络地图坐标
*
* @return 网络地图坐标
*/
publicGeoPoint gpsToBai(String data) {//data格式 nmea标准数据 ddmm.mmmmm,ddmm.mmmm 如3030.90909,11449.1234
String[] p = data.split(",");
intlat = (int) (((int) (Float.valueOf(p[0]) /100) + (100* (Float//将ddmm.mmmm格式转成dd.ddddd
.valueOf(p[0]) /100.0- (int) (Float.valueOf(p[0]) /100)) /60.0)) * 1E6);
intlon = (int) (((int) (Float.valueOf(p[1]) /100) + (100* (Float
.valueOf(p[1]) /100.0- (int) (Float.valueOf(p[1]) /100)) /60.0)) * 1E6);
GeoPoint pt =newGeoPoint(lat, lon);
returnCoordinateConvert.fromWgs84ToBai(pt);//转成网络坐标
}

❸ 如何编程实现开启或关闭GPS

在Activity中添加如下方法:

[java] view
plainprint?

<SPAN style="COLOR: #000000; FONT-WEIGHT: bold">private</SPAN> <SPAN style="COLOR: #000066; FONT-WEIGHT: bold">void</SPAN> toggleGPS<SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #009900">)</SPAN> <SPAN style="COLOR: #009900">{</SPAN>

Intent gpsIntent <SPAN style="COLOR: #339933">=</SPAN> <SPAN style="COLOR: #000000; FONT-WEIGHT: bold">new</SPAN> Intent<SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

gpsIntent.<SPAN style="COLOR: #006633">setClassName</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #0000ff">"com.android.settings"</SPAN>,

<SPAN style="COLOR: #0000ff">"com.android.settings.widget.SettingsAppWidgetProvider"</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

gpsIntent.<SPAN style="COLOR: #006633">addCategory</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #0000ff">"android.intent.category.ALTERNATIVE"</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

gpsIntent.<SPAN style="COLOR: #006633">setData</SPAN><SPAN style="COLOR: #009900">(</SPAN>Uri.<SPAN style="COLOR: #006633">parse</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #0000ff">"custom:3"</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

<SPAN style="COLOR: #000000; FONT-WEIGHT: bold">try</SPAN> <SPAN style="COLOR: #009900">{</SPAN>

PendingIntent.<SPAN style="COLOR: #006633">getBroadcast</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #000000; FONT-WEIGHT: bold">this</SPAN>, <SPAN style="COLOR: #cc66cc">0</SPAN>, gpsIntent, <SPAN style="COLOR: #cc66cc">0</SPAN><SPAN style="COLOR: #009900">)</SPAN>.<SPAN style="COLOR: #006633">send</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

<SPAN style="COLOR: #009900">}</SPAN>

<SPAN style="COLOR: #000000; FONT-WEIGHT: bold">catch</SPAN> <SPAN style="COLOR: #009900">(</SPAN>CanceledException e<SPAN style="COLOR: #009900">)</SPAN> <SPAN style="COLOR: #009900">{</SPAN>

e.<SPAN style="COLOR: #006633">printStackTrace</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

<SPAN style="COLOR: #009900">}</SPAN>

<SPAN style="COLOR: #009900">}</SPAN>
private void toggleGPS() {
Intent gpsIntent = new Intent();
gpsIntent.setClassName("com.android.settings",
"com.android.settings.widget.SettingsAppWidgetProvider");
gpsIntent.addCategory("android.intent.category.ALTERNATIVE");
gpsIntent.setData(Uri.parse("custom:3"));
try {
PendingIntent.getBroadcast(this, 0, gpsIntent, 0).send();
}
catch (CanceledException e) {
e.printStackTrace();
}
}

这个方法是1个纯开关,如果当前是开启的,那么就会关闭它,反之亦然。

检查GPS开关状态

那么,如何查看当前的GPS开关状态呢?可以用上面提到的反射方式调用isLocationProviderEnabled,代码片断如下:

[java] view
plainprint?

secureClass <SPAN style="COLOR: #339933">=</SPAN> cl.<SPAN style="COLOR: #006633">loadClass</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #0000ff">"android.provider.Settings$Secure"</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

isMethod <SPAN style="COLOR: #339933">=</SPAN> secureClass.<SPAN style="COLOR: #006633">getMethod</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #0000ff">"isLocationProviderEnabled"</SPAN>,

ContentResolver.<SPAN style="COLOR: #000000; FONT-WEIGHT: bold">class</SPAN>, <SPAN style="COLOR: #003399">String</SPAN>.<SPAN style="COLOR: #000000; FONT-WEIGHT: bold">class</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

<SPAN style="COLOR: #003399">Boolean</SPAN> ret <SPAN style="COLOR: #339933">=</SPAN> <SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #003399">Boolean</SPAN><SPAN style="COLOR: #009900">)</SPAN> isMethod.<SPAN style="COLOR: #006633">invoke</SPAN><SPAN style="COLOR: #009900">(</SPAN>secureClass, <SPAN style="COLOR: #000000; FONT-WEIGHT: bold">this</SPAN>

.<SPAN style="COLOR: #006633">getContentResolver</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #009900">)</SPAN>, <SPAN style="COLOR: #0000ff">"gps"</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>
secureClass = cl.loadClass("android.provider.Settings$Secure");
isMethod = secureClass.getMethod("isLocationProviderEnabled",
ContentResolver.class, String.class);
Boolean ret = (Boolean) isMethod.invoke(secureClass, this
.getContentResolver(), "gps");

也可以直接用下面的方法:

[java] view
plainprint?

<SPAN style="COLOR: #000000; FONT-WEIGHT: bold">private</SPAN> <SPAN style="COLOR: #000066; FONT-WEIGHT: bold">void</SPAN> isGPSEnable<SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #009900">)</SPAN> <SPAN style="COLOR: #009900">{</SPAN>

<SPAN style="FONT-STYLE: italic; COLOR: #666666">/* 用Setting.System来读取也可以,只是这是更旧的用法

String str = Settings.System.getString(getContentResolver(),

Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

*/</SPAN>

<SPAN style="COLOR: #003399">String</SPAN> str <SPAN style="COLOR: #339933">=</SPAN> Settings.<SPAN style="COLOR: #006633">Secure</SPAN>.<SPAN style="COLOR: #006633">getString</SPAN><SPAN style="COLOR: #009900">(</SPAN>getContentResolver<SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #009900">)</SPAN>,

Settings.<SPAN style="COLOR: #006633">Secure</SPAN>.<SPAN style="COLOR: #006633">LOCATION_PROVIDERS_ALLOWED</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

Log.<SPAN style="COLOR: #006633">v</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #0000ff">"GPS"</SPAN>, str<SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

<SPAN style="COLOR: #000000; FONT-WEIGHT: bold">if</SPAN> <SPAN style="COLOR: #009900">(</SPAN>str <SPAN style="COLOR: #339933">!=</SPAN> <SPAN style="COLOR: #000066; FONT-WEIGHT: bold">null</SPAN><SPAN style="COLOR: #009900">)</SPAN> <SPAN style="COLOR: #009900">{</SPAN>

<SPAN style="COLOR: #000000; FONT-WEIGHT: bold">return</SPAN> str.<SPAN style="COLOR: #006633">contains</SPAN><SPAN style="COLOR: #009900">(</SPAN><SPAN style="COLOR: #0000ff">"gps"</SPAN><SPAN style="COLOR: #009900">)</SPAN><SPAN style="COLOR: #339933">;</SPAN>

<SPAN style="COLOR: #009900">}</SPAN>

<SPAN style="COLOR: #000000; FONT-WEIGHT: bold">else</SPAN><SPAN style="COLOR: #009900">{</SPAN>

<SPAN style="COLOR: #000000; FONT-WEIGHT: bold">return</SPAN> <SPAN style="COLOR: #000066; FONT-WEIGHT: bold">false</SPAN><SPAN style="COLOR: #339933">;</SPAN>

<SPAN style="COLOR: #009900">}</SPAN>

<SPAN style="COLOR: #009900">}</SPAN>
private void isGPSEnable() {
/* 用Setting.System来读取也可以,只是这是更旧的用法
String str = Settings.System.getString(getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
*/
String str = Settings.Secure.getString(getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
Log.v("GPS", str);
if (str != null) {
return str.contains("gps");
}
else{
return false;
}
}

这2种方法的原理都是一样的,方法2其实也就是isLocationProviderEnabled实际调用的代码,只是Google未对读取操作进行权限限制。

❹ C语言编程:GPS数据处理

这是通过online judge测试的
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
int check(char *);
void utc(char *);
char bjtime[7];
int main()
{
char a[200];
int f=0;
char *ptr;
do
{
scanf("%s",a);
if(strncmp("$GPRMC",a,6)==0)
{
ptr=a;
for(int i=0;i<2;i++){
ptr=strchr(ptr,',');
ptr++;
}
if (ptr[0]=='A' && check(a))
{
utc(a);
f=1;
}
}
}while(strcmp("END",a)!=0);
if (f) printf("%c%c:%c%c:%c%c",bjtime[0],bjtime[1],bjtime[2],bjtime[3],bjtime[4],bjtime[5]);
return 0;
}
int check(char *s)
{
char *ck,*str;
int i;
char m=s[1];
for(i=2;i<strlen(s)-3;i++)
m^=s[i];
int z=(int)m%65536;
printf("%0x",z);
ck=&s[strlen(s)-2];
int x=strtol(ck,&str,16);
if(x==z) return 1;
else return 0;
}
void utc(char * s)
{
char *str1;
char str[7];
str1=&s[7];
strncpy(bjtime,str1,6);
int x=strtol(bjtime,&str1,10);
x+=80000;
x%=240000;
for(int i=5;i>=0;i--){
bjtime[i]=(char)((int)'0'+x%10);
x/=10;

}
}

❺ GPS定位 编程用汇编语言实现

首先, 如果不是非要用汇编的话, 就不要用汇编,因为中间牵涉到很多字符串的处理。
不过看你必须在8088上完成, 估计就是要求用汇编了。

简单的说下,首先你要实现用8088接受串口数据。 这应该不难,教科书上有。

然后去了解GPS数据格式,GPS数据是以字符串的形式一串串的输出的。 每一串都有个标示头,必须要查找相关资料,网络上很多的。
GPS输出的字符串中有些是包含有经纬度的。比如:

"#ABCD asdf, 0, 23, 45.564, 52.2356, 23, 4"
其中#ABCD是标示头, 45.564是维度, 52.2356是经度。
那么你的程序首先要找到标示头, 然后在找到经纬度的在字符串的位子, 比如可以用简单的数逗号来找。
剩下的就是显示问题了。

❻ 如何利用Android编程实现GPS定位

您好,很高兴为您解答。


一、准备工作
需要如下三种软件:
1. Eclipse
2. Android SDK
3. 开发Android程序的Eclipse 插件

为了开始我们的工作,首先要安装Eclipse,然后从Google的网站获得Android SDK,并且安装Eclipse插件。

二、Activity类
每一种移动开发环境都有自己的基类。如J2ME应用程序的基类是midlets,BREW的基类是applets,而Android程序的基类是 Activity。这个activity为我们提供了对移动操作系统的基本功能和事件的访问。这个类包含了基本的构造方法,键盘处理,挂起来恢复功能,以 及其他底层的手持设备的访问。实质上,我们的应用程序将是一个Activity类的扩展。在本文中读者将会通过例子学习到如何使用Activity类来编 写Android程序。下面是一个简单的继承Activity的例子。

{
publicvoidonCreate(Bundleparams){
super.onCreate(params);
setContentView(R.layout.main);
}
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
returntrue;
}
}

三 View类
View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。但它们之间有一些不同。每一个view都有一个用于绘画的画布。这个画布可以用 来进行任意扩展。本文为了方便起见,只涉及到了两个主要的View类型:定义View和Android的XML内容View。在上面的代码中,使用的是 “Hello World” XML View,它是以非常自然的方式开始的。
如果我们查看一下新的Android工程,就会发现一个叫main.xml的文件。在这个文件中,通过一个简单的XML文件,描述了一个屏幕的布局。这个 简单的xml文件的内容如下:

<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
androidrientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerHoriz
android:text=""
/>
</RelativeLayout>

上面的内容的功能看起来非常明显。这个特殊文件定义了一个相关的布局,这就意味着通过一个元素到另一个元素的关系或是它们父元素的关系来描述。对于视图来 说,有一些用于布局的方法,但是在本文中只关注于上述的xml文件。
RealtiveLayout中包含了一个填充整个屏幕的文本框(也就是我们的LocateMe activity)。这个LocateMe activity在默认情况下是全屏的,因此,文本框将继承这个属性,并且文本框将在屏幕的左上角显示。另外,必须为这个XML文件设置一个引用数,以便 Android可以在源代码中找到它。在默认情况下,这些引用数被保存在R.java中,代码如下:

publicfinalclassR{
publicstaticfinalclasslayout{
publicstaticfinalintmain=0x7f030001;
}
}

视图也可以被嵌套,但和J2ME不同,我们可以将定制的视图和Android团队发布的Widgets一起使用。在J2ME中,开发人员被迫选择 GameCanvas和J2ME应用程序画布。这就意味着如果我们想要一个定制的效果,就必须在GameCanvas上重新设计我们所有的widget。 Android还不仅仅是这些,视图类型也可以混合使用。Android还带了一个 widget库,这个类库包括了滚动条,文本实体,进度条以及其他很多控件。这些标准的widget可以被重载或被按着我们的习惯定制。现在让我们来进入 我们的例子。


四、Android实例

这个演示应用程序将演示了用户的当前的经度和纬度(在文本框中显示)。onCreate构造方法将和上面的例子基本相同,除了在其中加入了键盘处理,现在 让我们看一下onKeyDown的代码。

publicbooleanonKeyDown(intkeyCode,KeyEventevent){
if(keyCode!=KeyEvent.KEYCODE_DPAD_CENTER||m_bLoading)
{
returntrue;
}
m_bLoading=true;
getLocation();
returntrue;
}

下面让我们来解释一下这段代码,首先,这段代码检查了当前被按下的键,但还没有开始处理。而是在getLocation方法中处理这一切的。然后,将装载 flag标志以及调用getLocation方法,下面是getLocation方法的代码。

privatevoidgetLocation(){
Locationloc;
LocationManagerlocMan;
LocationProviderlocPro;
List<LocationProvider>proList;
setContentView(R.layout.laoding);
locMan=(LocationManager)getSystemService(LOCATION_SERVICE);
proList=locMan.getProviders();
locPro=proList.get(0);
loc=locMan.getCurrentLocation(locPro.getName());
Lat=(float)loc.getLatitude();
Lon=(float)loc.getLongitude();
CreateView();
setContentView(customView);
}

到这为止,程序开始变得更有趣了。但是不幸的是,Google关于之方面的文档还是比较少了。在程序的变量声明之后,我们需要演示一些装载信息。 R.layout.loading符合了另一个简单的XML布局视图。通过简单地调用setContentView方法可以使用转载信息重绘屏幕。
读者要注意的是:在编译时,Android会预先将所有的XML布局数据包装起来。如果我们想在编译后变化布局属性,按着规定,我们必须在源程序中做这些 事。
获得LocationManager的唯一方法是通过getSystemService()方法的调用。通过使用LocationManager, 我们可以获得一个位置提供者的列表。在一个真实的手持设备中,这个列表包含了一些GPS服务。实际上,我们希望选择更强大,更精确,最后不带有其他附加服 务的GPS。现在,在模拟器中提供了一个用于测试的GPS,这个GPS来自San Francisco。定制的GPS文件可以可以被上传,并进行测试。如果我们要测试更复杂的应用,来自San Francisco的GPS可能并不适合。
目前我们可以使用位置管理器和位置提供者进行getCurrentLocation的调用。这个方法返回本机的当前位置的一个快照,这个快照将以 Location对象形式提供。在手持设备中,我们可以获得当前位置的经度和纬度。现在,使用这个虚拟的手持设备,我们可以获得这个例子程序的最终结果: 建立了显示一个定制的视图。

五、使用定制视图
在最简单的窗体中,一个Android中的视图仅仅需要重载一个onDraw方法。定制视图可以是复杂的3D实现或是非常简单的文本形式。下面的 CreateView方法列出了上面看到的内容。

publicvoidCreateView(){
customView=newCustomView(this);
}

这个方法简单地调用了CustomView对象的构造方法。CustomView类的定义如下:

{
LocateMeoverlord;
publicCustomView(LocateMepCtx){
super(pCtx);
overlord=pCtx;
}
publicvoidonDraw(Canvascvs){
Paintp=newPaint();
StringsLat="Latitude:"+overlord.getLat();
StringsLon="Longitude:"+overlord.getLon();
cvs.drawText(sLat,32,32,p);
cvs.drawText(sLon,32,44,p);
}
}

这个定制的Android视图获得了经度和违度的测试数据,并将这些数据显示在屏幕上。这要求一个指向LocateMe的指针,Activity类是整 个应用程序的核心。它的两个方法是构造方法和onDraw方法。这个构造方法调用了超类的构造方法以及引起了Activity指针的中断。onDraw方 法将建立一个新的Paint对象(这个对象封装了颜色、透明度以及其他的主题信息),这个对象将会访问颜色主题。在本程序中,安装了用于显示的字符串,并 使用画布指针将它们画到屏幕上。这个和我们了解的J2ME游戏的画布看起来非常类似。

六、Android展望
从纯粹的开发观点看,Android是一个非常强大的SDK。它使用基于XML的布局和定制视图联合了起来。并可以使用滚动条、地图以及其他的组件。所以 的这一切都可以被重载,或由开发人员来定制。但它所提供的文档非常粗糙。在文档中并没有象SMS等技术,但是从整体上来看Android SDK,还是非常有希望的。也非常符合Google承诺的“First Look”SDK。现在我们要做的就是等待Google发布第一个基于Android的手机,并使用它。


如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】


希望我的回答对您有所帮助,望采纳!


~O(∩_∩)O~

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:628
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:357
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:75
php微信接口教程 发布:2025-04-16 17:07:30 浏览:300
android实现阴影 发布:2025-04-16 16:50:08 浏览:788
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:338
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:204
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:801
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:357
土压缩的本质 发布:2025-04-16 16:13:21 浏览:583