`
wuhua
  • 浏览: 2109777 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android编程之实现GPS定位

阅读更多

在几个月前,开发式手机联盟推出自己的Android手机雏形时,受到了极大的追捧。但是到现在还没有真机在市场上销售,Google为了鼓励开发人员来 开发Android手机的应用程序,提供了1千万美金来奖励那些在Android开发中的获奖者。当然,本文并不是告诉读者如何去赢得大奖,而是帮助读者 理解如何使用Android SDK来开发Android程序,其中包括如何使用XML布局来显示广西,从GPS组件中获得设备的位置等,在本文的最后将学习如何将文本显示在一个定制 的视图上。     一、准备工作
    要想开发Android程序,我们需要如下三种软件:
    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的例子。
public class LocateMe extends Activity
{
public void onCreate(Bundle params)
{
super.onCreate(params);
setContentView(R.layout.main);
}
public boolean onKeyDown(int keyCode, KeyEvent event)
{
return true;
}
}
三 View类
    View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。但它们之间有一些不同。每一个view都有一个用于绘画的画布。这个画布可以用 来进行任意扩展。本文为了方便起见,只涉及到了两个主要的View类型:定义View和Android的XML内容View。在上面的代码中,使用的是 “Hello World” XML View,它是以非常自然的方式开始的。
    如果我们查看一下新的Android工程,就会发现一个叫main.xml的文件。在这个文件中,通过一个简单的XML文件,描述了一个屏幕的布局。这个简单的xml文件的内容如下:
     
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns: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="ress the center key to locate yourself"
    />
</RelativeLayout>
   
    上面的内容的功能看起来非常明显。这个特殊文件定义了一个相关的布局,这就意味着通过一个元素到另一个元素的关系或是它们父元素的关系来描述。对于视图来说,有一些用于布局的方法,但是在本文中只关注于上述的xml文件。
    RealtiveLayout中包含了一个填充整个屏幕的文本框(也就是我们的LocateMe activity)。这个LocateMe activity在默认情况下是全屏的,因此,文本框将继承这个属性,并且文本框将在屏幕的左上角显示。另外,必须为这个XML文件设置一个引用数,以便 Android可以在源代码中找到它。在默认情况下,这些引用数被保存在R.java中,代码如下:
     
public final class R
{
public static final class layout
{
public static final int main=0x7f030001;
}
}
   
    视图也可以被嵌套,但和J2ME不同,我们可以将定制的视图和Android团队发布的Widgets一起使用。在J2ME中,开发人员被迫选择 GameCanvas和J2ME应用程序画布。这就意味着如果我们想要一个定制的效果,就必须在GameCanvas上重新设计我们所有的widget。 Android还不仅仅是这些,视图类型也可以混合使用。Android还带了一个 widget库,这个类库包括了滚动条,文本实体,进度条以及其他很多控件。这些标准的widget可以被重载或被按着我们的习惯定制。现在让我们来进入 我们的例子。  
四、Android实例
    这个演示应用程序将演示了用户的当前的经度和纬度(在文本框中显示)。onCreate构造方法将和上面的例子基本相同,除了在其中加入了键盘处理,现在让我们看一下onKeyDown的代码。
   
     
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode != KeyEvent.KEYCODE_DPAD_CENTER || m_bLoading)
{
return true;
}
m_bLoading = true;
getLocation();
return true;
}

   
    下面让我们来解释一下这段代码,首先,这段代码检查了当前被按下的键,但还没有开始处理。而是在getLocation方法中处理这一切的。然后,将装载flag标志以及调用getLocation方法,下面是getLocation方法的代码。
   
     
private void getLocation()
{
Location loc;
LocationManager locMan;
LocationProvider locPro;
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方法列出了上面看到的内容。
     
public void CreateView()
{
customView = new CustomView(this);
}

   
    这个方法简单地调用了CustomView对象的构造方法。CustomView类的定义如下:
   
public class CustomView extends View
{
LocateMe overlord;
public CustomView(LocateMe pCtx)
{
super(pCtx);
overlord = pCtx;
}
public void onDraw(Canvas cvs)
{
Paint p = new Paint();
String sLat = "Latitude: " + overlord.getLat();
String sLon = "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的手机,并使用它。
来自中国IT实验室
  在上面程序中的onCreate方法将在应用程序第一次开始时调用。Bundle对象包含了任何用于建立参数或环境数据所需要的基本信息。 Activity可以是全屏的,或是悬浮的。它们可以是嵌套的,但是每一部分基本是独立的。那么,也许有人会问,setContentView是做什么的 呢?

分享到:
评论

相关推荐

    Android编程实现GPS定位

    【Android编程实现GPS定位】 Android平台为开发者提供了一套完整的框架,使得开发GPS定位应用变得简单易行。本文旨在引导开发者了解如何利用Android SDK来创建一个基础的GPS定位应用程序,包括如何设置开发环境,...

    androidGPS下载

    首先,我们来看"Android编程之实现GPS定位.mht",这可能是一个网页存档文件,通常包含HTML、图像和其他相关资源。它可能详细介绍了如何在Android应用中启用和使用GPS功能,包括请求权限、监听GPS状态变化、获取...

    android GPS定位编程

    本教程将深入探讨如何在Android中实现GPS定位功能,并涵盖地图查询、线路搜索和距离测量等关键知识点。 1. **开启和监听GPS服务** 在Android应用中,首先需要在用户的设备上获取GPS权限。这通常在应用的`...

    基于Android的智能移动设备GPS定位系统设计与实现.pdf

    文章首先介绍了Android系统的框架结构,然后详细阐述了在Android平台上进行GPS定位的技术和编程实现方法。 1. Android系统框架 Android操作系统是一个开放源代码的移动设备平台,由Linux内核为基础构建。它包括操作...

    Android_GPS.rar_Android GPS定位_GPS_android_gps android_定位

    本文将深入探讨Android中的GPS定位机制、API的使用以及相关的编程实践。 1. **Android GPS定位机制** Android系统通过集成GPS硬件模块与网络定位服务(如Wi-Fi和移动网络)来实现定位功能。GPS模块接收来自卫星的...

    android应用源码(精)GPS定位测速源码-IT计算机-毕业设计.zip

    本资料是针对Android应用开发的一份精良源码,主要实现了GPS定位和测速功能,非常适合计算机科学与技术专业的学生进行毕业设计学习。在Android平台上,GPS定位和速度监测是移动应用开发中的常见需求,例如在导航、...

    android_gps.zip_android_android gps_c++builder android_gps定位_gps

    本资源包含了一个集成了基站、WIFI和GPS定位的Android源码项目,这对于理解如何在Android应用中实现多元定位方式至关重要。同时,这个项目还涉及到C++Builder的使用,这在跨平台开发时可能会用到。 首先,我们要...

    android定位(基站,GPS,wifi)齐全

    `Android实现GPS定位.pdf`和`Android实现GPS定位(1).pdf`可能包含关于如何在Android应用中启用和使用GPS服务的教程。通常,开发者需要请求权限,调用LocationManager服务,注册GPS监听器,然后解析接收到的位置更新...

    gps.rar_android_android 定位_gps定位_java 地图 定位_地图定位

    在Android开发中,GPS定位是实现移动应用地理位置服务的关键技术之一。GPS(全球定位系统)与Java编程语言相结合,能够帮助开发者创建具有精准地图定位功能的应用。本篇将深入探讨Android平台上的GPS定位原理、API...

    android使用GPS获取当前地理位置

    因此,最好是在`LocationListener`的`onLocationChanged`回调中处理`Location`对象,因为系统会在GPS定位成功时自动传递新的位置信息。 接下来,我们需要创建并实例化一个`LocationListener`。通常,推荐在Activity...

    Android编程实现GPS位置获取的方法

    Android编程实现GPS位置获取的方法主要介绍了Android编程实现GPS位置获取的方法,结合具体实例形式分析了Android针对GPS定位的常见操作技巧。 在Android系统中,GPS定位是一项重要的功能,许多应用程序都需要使用...

    Android编程经典200例

    - GPS定位:使用LocationManager获取经纬度信息,实现位置追踪。 7. **通知与广播** - Notification:创建和管理通知,向用户提供反馈。 - BroadcastReceiver:实现广播接收器,监听系统或自定义事件。 8. **...

    基于android平台的gps车辆定位系统的设计与实现-设计论文-毕设论文.doc

    基于Android平台的GPS车辆定位系统的设计与实现 Android 平台的 GPS 车辆定位系统的设计与实现是智能交通系统的一个重要组成部分,它的发展融合了当今空间定位技术、无线通信技术和地理信息系统的最新成果。本文将...

    基于Android GPS定位聊天软件的设计与实现任务书

    ### 基于Android GPS定位聊天软件的设计与实现——核心知识点解析 #### 一、课题背景与意义 在数字化时代,即时通信(Instant Messaging, IM)已成为人们日常沟通的重要方式,尤其是在移动互联网环境下,智能手机...

    Android应用源码之android程序的自动更新 和 基于GPS定位的轨迹存储-IT计算机-毕业设计.zip

    在Android应用开发中,"Android应用源码之android程序的自动更新 和 基于GPS定位的轨迹存储"是一个常见的实战课题,它涉及到移动应用的两个核心功能:自动更新机制和位置服务。这两个功能对于现代应用程序来说至关...

    Android项目GPS实时定位位置共享源码

    在Android开发中,实现GPS实时定位和位置共享是一项常见的需求,尤其在构建地图应用或社交应用时。这个“Android项目GPS实时定位位置共享源码”提供了一个完整的解决方案,经过实际测试,利用了百度地图API来获取和...

    安卓GPS地图导航定位指南相关-Android高德地图gps定位.rar

    本压缩包"Android高德地图gps定位.rar"包含了与实现这一功能相关的源代码和资源文件,适合开发者进行学习和参考。 首先,我们要理解GPS(全球定位系统)的工作原理。GPS是一种基于卫星导航的定位系统,通过接收至少...

    Android获取GPS定位(获取经纬度)

    本文将深入探讨如何在Android中实现GPS定位,获取经纬度坐标。 首先,我们需要理解Android系统中的定位框架。Android提供了一个名为Location Services的框架,它包含了多种定位方式,包括GPS(全球定位系统)、网络...

    Android开发之百度地图定位打卡

    总的来说,实现“Android开发之百度地图定位打卡”涉及到Android应用开发基础、百度地图API的集成与使用、位置服务的管理和定制化功能的实现等多个方面,需要开发者具备扎实的Android编程技能和良好的问题解决能力。...

Global site tag (gtag.js) - Google Analytics