android模拟器GPS简单应用(一)

1、首先允许GPS操作权限

  在AndroidManifest.xml 中加入代码:

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

 

2、其中主要应用到的知识点如下所示:

     LocationManager       //This class provides access to the system location services.

     LocationListener        //Used for receiving notifications from the LocationManager when the location has changed

     Location                    //A class representing a geographic location sensed at a particular time (a "fix"). 

 

3、主要实现流程

    1)获取LocationManager实例

    2)实现监听器 LocationListener

    3)注册监听器 LocationListener

    4)获取地理位置信息Location

 

4、主要接口分析与说明

     1)、android不允许直接对LocationManager进行实例化,必须通过接口getSystemService获取LocationManager实例,如:

             locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);。

     2)、监听器的接口onLocationChanged,主要负责捕获地理位置变化后的地理位置信息。

     3)、接口requestLocationUpdates注册监听器

     4)、接口getLastKnownLocation返回最后一次捕获的地理位置信息数据。

 

5、具体实现代码

 

[java]  view plain copy
  1. public class gpstest extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     LocationManager locationManager;  
  4.     TextView textv;  
  5.     Button btnGetLocation;  
  6.   
  7.     @Override  
  8.     public void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.main);  
  11.           
  12.         textv=(TextView)findViewById(R.id.textview);  
  13.         btnGetLocation=(Button)findViewById(R.id.btnGetLocation);  
  14.         btnGetLocation.setOnClickListener(new bntOnClickListen());  
  15.           
  16.         //通过getSystemService接口获取LocationManager实例  
  17.         locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);  
  18.           
  19.         //实现监听器 LocationListener   
  20.         LocationListener locationlisten=new LocationListener() {  
  21.               
  22.             public void onStatusChanged(String arg0, int arg1, Bundle arg2) {  
  23.                 // TODO Auto-generated method stub  
  24.                 // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数  
  25.             }  
  26.               
  27.             public void onProviderEnabled(String arg0) {  
  28.                 // TODO Auto-generated method stub  
  29.                 // Provider被enable时触发此函数,比如GPS被打开  
  30.             }  
  31.               
  32.             public void onProviderDisabled(String arg0) {  
  33.                 // TODO Auto-generated method stub  
  34.                 // Provider被disable时触发此函数,比如GPS被关闭  
  35.             }  
  36.               
  37.             //当坐标改变时触发此函数;如果Provider传进相同的坐标,它就不会被触发  
  38.             public void onLocationChanged(Location arg0) {  
  39.                 // TODO Auto-generated method stub  
  40.                 if (arg0 != null) {     
  41.                     Log.i("log""Location changed : Lat: "  + arg0.getLatitude() + " Lng: " + arg0.getLongitude());     
  42.                 }    
  43.             }  
  44.         };  
  45.           
  46.         // 注册监听器 locationListener   
  47.         //第 2 、 3个参数可以控制接收GPS消息的频度以节省电力。第 2个参数为毫秒, 表示调用 listener的周期,第 3个参数为米 ,表示位置移动指定距离后就调用 listener  
  48.         locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, locationlisten);  
  49.            
  50.     }  
  51.       
  52.     class bntOnClickListen implements OnClickListener{  
  53.   
  54.         public void onClick(View v) {  
  55.             // TODO Auto-generated method stub  
  56.             //获取地理位置信息数据(如果没实现监听器和注册监听器,好像获取不了地理数据)  
  57.             Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);  
  58.             if (location!=null) {  
  59.                 String strLati = Double.toString(location.getLatitude());  
  60.                 String strLong = Double.toString(location.getLongitude());  
  61.                 //显示地理位置数据  
  62.                 textv.setText(strLati + "/" + strLong);  
  63.             }  
  64.             else{  
  65.                 Log.i("log""location==NULL");  
  66.             }  
  67.         }  
  68.           
  69.     }  
  70. }  

 

6、GPS测试

如果是在模拟器中调试的话,有二种方法可以进行GPS测试。

第一:通过DDMS。打开"Window->Show View->Other” 中打开"Emulator Control” View即可手动设置地理位置数据,如下图所示:

 

第二:使用geo命令。开始-> 运行->输入 telnet 5554,然后在命令行下输入 geo fix -39.4 116.9 326 ,这三个参数分别代表了经度、纬度和海拔(海拔可不写)。
无论是上述的那一种方法,当android捕获到地理信息之后,都会在状态栏上显示一个卫星接收的图标,如下图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
USBgps驱动&测试软件 GPS是一种接收天空上的免费GPS卫星进行定位的设备。 只要卫星不掉下来。一直可以免费使用的。 有朋友以为要收费,实际上是GPS地图正版软件的收费,不是GPS服务收费。 如果你使用我们提供的免费软件。就可以一直免费使用。 我们销售的GPS品种比较多。主要的区别是使用的接收模块不一样。 所以在阅读说明时注意和您购买的GPS相对应。不要选择错参数。 GPS和地图软件连接的参数主要有两个。 1.一个是串口的端口号。这个可以在安装好GPS驱动后,在设备管理器的硬件列表的端口下面的 USB GPS COMM PORT设备后面括号里面找到。 (进入设备列表的方法是:在桌面我的电脑图标上按鼠标右键-选择属性菜单-选择硬件菜单栏-设备管理器-点击列表里面的端口项-USB GPS COMM PORT (COM?),那个问号就是您的GPS端口号)。 2,还有一个参数是波特率。我们销售的GPS对应的波特率如下。 台湾三代USB GPS: 9600 丽台二代USB GPS:4800 真正SIRF三代 USB GPS:38400 丽台三代USB GPS: 38400 sirf新版固件:4800 这个波特率在每个导航软件里面都要使用。而且各自的设置方法不一样。 一定要留意软件的安装说明里面波特率的设置方法。 我们在软件设置里面都重点说明了的。 如果端口号和波特率设置不对。就不能和地图软件对应。会出现不能定位或提示设备正在初始化等错误。 关于导航软件: 我们附送的光盘里面主要是USB GPS驱动程序和信号测试程序。WM模拟器主程序。还有领路人的导航软件。同时提供城际通和凯立德的WM模拟器版的导航软件的下载地址。 这样一起就是:驱动程序。测试程序,领路人PC版地图和转换端口软件,灵图9地图,凯立德地图。 实际安装的步骤是:安装好驱动程序。记住端口号和自己GPS的波特率。 1.阅读GPSDIAG测试软件说明。使用测试软件测试GPS正常。 这个是测试GPS是否正常使用的。 测试正常的话就可以不用测试直接开导航软件就可以了。 2.解压光盘里面的领路人软件到您本地硬盘D盘的根目录。 修改导航软件的配置文件适合自己的电脑配置。 可以参看光盘附带的领路人软件安装图示。 然后直接运行使用就可以了。 具体使用方法可以进入软件后在设置里面查看软件的帮助文档。 3,凯立德地图。 安装和设置凯立德地图前一定要注意退出GPSDIAG测试软件,GPSGATE和领路人导航软件。否则系统会出错。 同样城际通和凯立德也不能同时运行。 领路人,凯立德和灵图是三套不同的导航软件。不能同时使用。 您可以试用后选择合适自己的其中一套使用。其他的两种做备用。 先安装光盘里面的XGPS WM模拟器主程序。阅读设置说明进行设置。 主要注意。在XGPS的配置菜单,设置SDMMC目录在硬盘的位置。在映射菜单里面的第一项 选择GPS的端口号。这个端口号是在硬件列表的实际端口号。 因为CE系统不能保存设置。所以以后每次新打开XGPS模拟器,都要设置一下这两项。 XGPS默认的输出端口是COM1.所以在凯立德地图里面的配置文件都要设置端口为COM1。 否则不能正常工作。 (最新提示!可以看光盘里面的关于端口保存的图示,可以省略上面的每次都要设置外部端口的步骤了)。 安装完成后的实际使用步骤:接好GPS-打开X-GPS-设置SDMMC指向和映射的端口-确认后在模拟器的 一机多图界面选择开启凯立德。 GPS驱动安装步骤: 首先把附带的光盘放到电脑的光驱中。 把软件解压到电脑的硬盘里面。 XP系统下把USB GPS插到电脑的USB接口。 电脑会识别出新的硬件设备并要求安装驱动。 把安装目录指向光盘的《xp驱动》文件夹。 按确认就可以安装好驱动了。 win7下直接运行驱动安装的程序。安装完成后插入GPS就会自己安装好驱动。 安装好驱动后在电脑的硬件列表里面检查新安装的硬件。 (在我的电脑图标按右键选属性,然后点击设备管理器) 在端口类别里面可以看到有个USB GPS设备。后面用括号写着COM加数字。 这个数字就是USB GPS的端口号。 请注意。一般情况GPS在室内基本没有办法实现定位的。 一定要在室外定位。最好是比较空旷的地方。 第一次定位时间会比较长一些。属于正常现象。 定位完成后,以后再使用定位速度就快很多。 全球GPS卫星一共有32个。实际正常使用大约是28个。有几个是备用的。 基本最多能搜索到的卫星是8-12个信号。其他的卫星在地球的另外一边。是不能搜索到的。 这就是有的朋友会问我的GPS信道有20个。为什么只能收到10个的原因。 特别注意!!!由于串口信号不能共享,所以不能同时使用多个GPS地图软件或是信号测试软件。 只能单独运行信号测试软件或是导航软件。否则会引起信号检测不正常导致不能定位。 例如在开启了GPSDIAG测试软件后。就不能再同时开启地图。这样会发生无法搜星的问题。 一定要退出GPSDIAG,才能正常使用导航软件。 同样道理。两个不同的导航软件也不能同时运行。只能运行一个。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值