免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > Android系统程序开发之gps导航Whereyouare

Android系统程序开发之gps导航Whereyouare

时间:2012-03-25 14:54来源:未知 整理:寂涯网络 点击:

Android 系统手机的发展是大势所趋,相应的软件开发、安全等问题也成为了广大软件 开发者的话题,目前出产的大多数 Android 系统的手机都自带了 GPS 定位模块,相应的 GPS 软件如高德、凯立德导航软件也成为了很多手机发烧友必备的装机软件了,开发导航软件这 样的东西自然不会是个体或小团队所能够完成的,但这不代表我们不能对此加以应用,俗话 说,剑走偏锋嘛,今天,给大家展示一下 Android 系统下 GPS 定位在实际中可能存在的价 值及应用。
软件功能及开发思路

我们今天实现的软件名叫 whereyouare,顾名思义,它是用来探测用户位置的一种应用, whereyouare 在运行时会连接我们的服务端,并发送自己所在位置经纬度及手机号码。我们 在服务端通过经纬度信息来获取用户所在位置的地图信息并将它实时的显示出来,由于手机 端往服务端发送数据不需要时刻保持连接,所以,在这里我们选择通过 Socket 的 UDP 进行 连接,这样一方面可以节约手机流量,另一方面更加节约内存,从而更省电。服务端方面, 本来也可以用 Android 程序来实现,不过由于手机上显示的画面较小,而且需要消耗流量来 监控等问题不太适合,当然,如果想使用手机端来监控也是很容易的,在这里我们采用 PC 机来做接收端,整体的思路如图 1 所示:

图1

代码实现

由于 Socket 的平台通用性,我们只需要设计一套完整的通信协议,就可以在不同系统、 不同平台下通信,为了使开发变成更顺手,PC 端我使用 VC6 来开发。但是需要注意的是 Android 程序开发是基于 JAVA 的 App Framework 的代码,在与 C++通信中使用的字节序不 同,为了解决这个问题,我们传输数据过程中采用 UTF-8 编码,这样一方面由于编码的通 用性,一方面也有效的解决的字节序的问题,在这点上,大家需要注意。
首先,我们来看手机端的代码,由于代码需要用使到 Socket 访问网络以及使用 GPS 定 位,因为我们首先需要在 AndroidManifest.xml 文件中加入以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<user-permission android:name="android.permission.ACCESS COARSE LOCATION" />
另外,我们的手机端在发送数据时候也会连带发送手机号码,获取手机号码信息还需要
加入如下权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
接下来是 GPS 检测代码,因为很多人在使用手机的时候默认是将 GPS 关闭的,这样,
就无法获取地理位置信息了,我们的程序应该要检测这种状况并提示用户开启 GPS,代码 如下:
private void openGPSSettings() {
LocationManager lm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
if
(lm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) { System.out.println("GPS 模块正常...");
return;

}
System.out.println("GPS 模块没有启动...");
Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
startActivityForResult(intent,0); //此为设置完成后返回到获取界面
}

LocationManager 类是 Android 系统提供给我们的一个接口,通过它我们可以访问系统
提供的定位服务,
而通过 getSystemService 这个函数我们可以获取系统所提供的所有服务,如闹钟服务 AlarmManager、电话服务 TeleponyManager、Wi-Fi 服务 WifiManager 等,但是要注意: getSystemService 这个方法基于 context,它是 Activity 控件的一个方法,因此只有在具 体可视窗体的程序中这个方法才能使用!这是我演示程序用到 Activity 的原因,我想这可 能是 Android 系统出于安全考虑才让使用 GPS 的程序必须生成在 Activity 中,不过我们还 是有方法让我们的 Android 程序运行在后台中,不过这不是我们这篇讨论的内容了,在获得 LocationManager 后我们调用它的 isProviderEnabled 方法判断 GPS 模块是否已经启动,如 果没启动,我们就提示用户启动。
 
如果 GPS 模块启动正常,下面我们就来使用它的定位服务了,代码如下:

private void SetGPSListener(){
try{
locationManager  =  (LocationManager)
this.getSystemService(Context.LOCATION_SERVICE); System.out.println("获取 location");
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
5 * 1000, 10, locationListener);// 设置监听器
}
catch(Exception e){

本页地址 http://www.jybase.net/biancheng/20120325807.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com