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

6、GPS测试

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

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

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

android模拟器GPS简单应用(一)相关推荐

  1. android模拟器GPS信号设置

    在模拟器上获取GPS信息时,使用Location loc = LocationManager.getLastKnownLocation("gps");来获取location信息,但 ...

  2. android 模拟器gps不能用或者无法获得gps信号

    如果使用模拟器时,手机设置已经开启gps,还是不能获得模拟器信号,或者程序里面一直为null.那么把target换成 api 7.换成2.1的模拟器就可以了应该. 转载于:https://www.cn ...

  3. Android 驱动和系统开发 2. 解析模拟器GPS模块 (原创)

    好久没有写技术博客了,恰逢今天还感冒了,这破天气,晚上凉风一吹,就感冒了,要加强锻炼呀. 好了,废话不多说,由于工作需要,我要移植一个虚拟的gps模块,于是乎,我就参考了Android模拟器的gps模 ...

  4. Android 驱动和系统开发 2. 解析模拟器GPS模块

    好久没有写技术博客了,恰逢今天还感冒了,这破天气,晚上凉风一吹,就感冒了,要加强锻炼呀. 好了,废话不多说,由于工作需要,我要移植一个虚拟的gps模块,于是乎,我就参考了android模拟器的gps模 ...

  5. android 发送短信 广播 demo,向Android模拟器打电话发短信的简单方法

    在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...

  6. android虚拟机接收真实短信,向Android模拟器打电话发短信的简单方法

    在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...

  7. 向Android模拟器打电话发短信的简单方法

    在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...

  8. 介绍Visual Studio的Android模拟器

    介绍Visual Studio的Android模拟器 http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/12/introducing-vi ...

  9. 安装Android模拟器Genymotion【Android学习入门】

    安装Android模拟器Genymotion 推荐教程:一个强大的Android模拟器Genymotion具体内容如下: 相信很多Android开发者一定受够了速度慢.体验差效率及其地下的官方模拟器了 ...

  10. 【转】使用命令行方式创建和启动android模拟器

    原文网址:http://blog.csdn.net/tiandinilv/article/details/8953001 1.Android模拟器介绍 Android中提供了一个模拟器来模拟ARM核的 ...

最新文章

  1. 高级C语言教程-指针和存储
  2. 嵌入式应用开发第一阶段
  3. 六十二、Js中的冒泡和捕获点击事件和Vue组件绑定原生事件
  4. Linux命令(三) 移动文件 mv
  5. 微信多开工具 可以同时在电脑上打开多个微信 免费开源
  6. python 字符串操作list【:-1】的几种用法
  7. CUDA学习(三十六)
  8. 自学python后自己接单-自学Python 后端一年半,如何写简历包装自己得到面试机会?...
  9. java单链表删除重复元素_用加头节点实现链表的删除重复元素、分割、翻转(Java实现)...
  10. [导入]OGRE中用到的设计模式
  11. 【246天】跃迁之路——程序员高效学习方法论探索系列(实验阶段04-2017.10.09)...
  12. uniapp微信小程序订阅消息发送服务通知--超详细
  13. matlab韦伯分布,科学网—威布尔分布 Weibull Distribution 资源网页搜集 - 杨正瓴的博文...
  14. (四)下载利器aria2
  15. Tesseract(识别验证码)
  16. sql server2008 批量删除发生:查询处理器用尽了内部资源,无法生成查询计划。这种情况很少出现,只有在查询极其复杂或引用了大量表或分区时才会出现。请简化查询
  17. Visual FoxPro 6.0常用命令
  18. windows配置java环境
  19. 机器学习——EM和GMM(基于李航老师的推导)
  20. 奇数数列求和python_奇的解释|奇的意思|汉典“奇”字的基本解释

热门文章

  1. Linux 运维工程师 必掌握的技能 ?
  2. nginx部署前端代码
  3. AT88SC104 加密认证过程
  4. 【魔改蜗牛星际】A单主板变“皇帝板”扩展到8个SATA口
  5. doors dxl 遍历object 查找
  6. OpenCV计算机视觉编程攻略(第2版)代码
  7. 项目日报模板_接手一个新项目应该如何入手
  8. 南阳理工ACM111
  9. 2021 年 GitHub 最佳开源软件榜单
  10. 深入理解Nginx 阅读笔记(一)