前段时间在弄GPRS定位的问题,使用google的地图定位,大家也都知道,google现在在中国境内有很多限制,而且国外刷机严重,难免将google的各种服务给刷掉,所以最终采用百度的定位系统,完美实现。现在有时间了,给大家讲一讲,代码并不多。
我还是先说说google的定位吧,说不定有些仁兄需要的呢!
首先判断机器的GPRS模块是否正常,如果不正常,那没办法了,哪家的定位系统都不能用。
[html] view plain copy
 print?
  1. LocationManager alm = (LocationManager) this
  2. .getSystemService(Context.LOCATION_SERVICE);
  3. if (alm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
  4. Toast.makeText(this, "GPS模块正常", Toast.LENGTH_SHORT).show();
  5. return;
  6. }
设置开启GPRS页面
[html] view plain copy
 print?
  1. Toast.makeText(this, "请开启GPS!", Toast.LENGTH_SHORT).show();
  2. Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
  3. startActivityForResult(intent, 0); // 此为设置完成后返回到获取界面
设置省电模式,获得最好的定位方式
[html] view plain copy
 print?
  1. locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  2. gprs_view = (TextView) findViewById(R.id.gprs_view);
  3. Criteria criteria = new Criteria();
  4. // 获得最好的定位效果
  5. criteria.setAccuracy(Criteria.ACCURACY_COARSE);
  6. criteria.setAltitudeRequired(false);
  7. criteria.setBearingRequired(false);
  8. criteria.setCostAllowed(false);
  9. // 使用省电模式
  10. criteria.setPowerRequirement(Criteria.POWER_LOW);
  11. // 获得当前的位置提供者
  12. provider = locationManager.getBestProvider(criteria, false);
  13. ser.append(provider);
  14. locationManager.requestLocationUpdates(provider, 2000, 10, this);
获得上次location对象
[html] view plain copy
 print?
  1. // 使用网络定位,获得上次定位的location对象
  2. if (location == null) {
  3. location = locationManager
  4. .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
  5. provider = LocationManager.NETWORK_PROVIDER;
  6. }
然后定位
[html] view plain copy
 print?
  1. String latLongString;
  2. if (location != null) {
  3. double lat = location.getLatitude();
  4. double lng = location.getLongitude();
  5. latLongString = "纬度:" + lat + "\n经度:" + lng;
  6. Geocoder gc = new Geocoder(context);
  7. List<Address> addresses = null;
  8. try {
  9. addresses = gc.getFromLocation(location.getLatitude(),
  10. location.getLongitude(), 1);
  11. } catch (IOException e) {
  12. // TODO Auto-generated catch block
  13. e.printStackTrace();
  14. }
  15. ser.append("\n" + addresses.get(0).getCountryName());
  16. } else {
  17. latLongString = "无法获取地理信息";
  18. }
  19. ser.append("\n" + "您当前的位置是:\n" + latLongString);
实现LocationListener接口,并在onLocationChanged和onProviderDisabled方法中实现updateWithNewLocation方法
以期待在未获得location对象时,不断获取直到取到为止
[html] view plain copy
 print?
  1. private void updateWithNewLocation(Location location) {
  2. // TODO Auto-generated method stub
  3. if (location == null) {
  4. locationManager.requestLocationUpdates(provider, 2000, (float) 0.1,
  5. this);
  6. }
  7. }
以上是我弄到的关于用google开发服务的资料,实际上次定位的位置很难得到,实现定位,比较困难,也许是笔者使用的是水货,刷过机的原因吧。
下面是百度的定位,可以说都能实现吧
首先请大家看效果图,是实现了的!PS:朝鲜金胖子,看到我的经纬度乱来啊!
百度的定位相对来说要简单的多,为什么呢,因为它只有两三个方法,一般国内的手机GPS功能有被“阉割”的可能,所以一般GPS定位取不到位置,通用的还是GPRS网络定位功能。
如图,导入项目所需包
然后在manifest.xml中加入权限,以及定义Service
[html] view plain copy
 print?
  1. <span style="font-size:18px;">    <application
  2. android:name="com.baidu.locSDK.test.Location"
  3. android:icon="@drawable/icon"
  4. android:label="@string/app_name" >
  5. <activity
  6. android:name="mainActivity"
  7. android:configChanges="orientation|keyboardHidden"
  8. android:label="@string/app_name" >
  9. <intent-filter>
  10. <action android:name="android.intent.action.MAIN" />
  11. <category android:name="android.intent.category.LAUNCHER" />
  12. </intent-filter>
  13. </activity>
  14. <service
  15. android:name="com.baidu.location.f"
  16. android:enabled="true"
  17. android:process=":remote" >
  18. </service>
  19. </application>
  20. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  21. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  22. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  23. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  24. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  25. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  26. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  27. <uses-permission android:name="android.permission.INTERNET" />
  28. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
  29. <uses-permission android:name="android.permission.READ_LOGS" />
  30. <uses-permission android:name="android.permission.VIBRATE" /></span>
主要代码如下,但要先打开网络
[html] view plain copy
 print?
  1. mStartBtn.setOnClickListener(new OnClickListener() {
  2. @Override
  3. public void onClick(View v) {
  4. if (!mIsStart) {
  5. setLocationOption();
  6. mLocClient.start();
  7. mStartBtn.setText("开始");
  8. mIsStart = true;
  9. } else {
  10. mLocClient.stop();
  11. mIsStart = false;
  12. mStartBtn.setText("结束");
  13. }
  14. Log.d("locSDK_Demo1",
  15. "... mStartBtn onClick... pid=" + Process.myPid()
  16. + " count=" + count++);
  17. }
  18. });
[html] view plain copy
 print?
  1. private void setLocationOption() {
  2. LocationClientOption option = new LocationClientOption();
  3. option.setOpenGps(mGpsCheck.isChecked()); // gps
  4. option.setCoorType(mCoorEdit.getText().toString());
  5. option.setAddrType(mAddrEdit.getText().toString());
  6. option.setScanSpan(Integer.parseInt(mSpanEdit.getText().toString()));
  7. mLocClient.setLocOption(option);
  8. }
最终展示出来
[html] view plain copy
 print?
  1. public void logMsg(String str) {
  2. try {
  3. mData = str;
  4. if ( mTv != null )
  5. mTv.setText(mData);
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. }
  9. }
  10. public class MyLocationListenner implements BDLocationListener {
  11. @Override
  12. public void onReceiveLocation(BDLocation location) {
  13. if (location == null)
  14. return ;
  15. StringBuffer sb = new StringBuffer(256);
  16. sb.append("time : ");
  17. sb.append(location.getTime());
  18. sb.append("\nerror code : ");
  19. sb.append(location.getLocType());
  20. sb.append("\nlatitude : ");
  21. sb.append(location.getLatitude());
  22. sb.append("\nlontitude : ");
  23. sb.append(location.getLongitude());
  24. sb.append("\nradius : ");
  25. sb.append(location.getRadius());
  26. if (location.getLocType() == BDLocation.TypeGpsLocation){
  27. sb.append("\nspeed : ");
  28. sb.append(location.getSpeed());
  29. sb.append("\nsatellite : ");
  30. sb.append(location.getSatelliteNumber());
  31. } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
  32. sb.append("\nprovince:");
  33. sb.append(location.getProvince());
  34. sb.append("\ncity");
  35. sb.append(location.getCity());
  36. sb.append("\nstreet");
  37. sb.append(location.getDistrict());
  38. sb.append("\naddr : ");
  39. sb.append(location.getAddrStr());
  40. }
  41. sb.append("\nsdk version : ");
  42. sb.append(mLocationClient.getVersion());
  43. logMsg(sb.toString());
  44. }
  45. public void onReceivePoi(BDLocation poiLocation) {
  46. if (poiLocation == null){
  47. return ;
  48. }
  49. StringBuffer sb = new StringBuffer(256);
  50. sb.append("Poi time : ");
  51. sb.append(poiLocation.getTime());
  52. sb.append("\nerror code : ");
  53. sb.append(poiLocation.getLocType());
  54. sb.append("\nlatitude : ");
  55. sb.append(poiLocation.getLatitude());
  56. sb.append("\nlontitude : ");
  57. sb.append(poiLocation.getLongitude());
  58. sb.append("\nradius : ");
  59. sb.append(poiLocation.getRadius());
  60. if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation){
  61. sb.append("\naddr : ");
  62. sb.append(poiLocation.getAddrStr());
  63. }
  64. if(poiLocation.hasPoi()){
  65. sb.append("\nPoi:");
  66. sb.append(poiLocation.getPoi());
  67. }else{
  68. sb.append("noPoi information");
  69. }
  70. logMsg(sb.toString());
  71. }
  72. }
就是这样,一个麻烦至极的定位功能完成了!源码下载地址:http://download.csdn.net/detail/liuxian13183/5088512

(五)GPRS定位的实现相关推荐

  1. 做SEO优化第五步:定位目标关键词和长尾关键词

    通常,我们在给网站选择关键词的时候除了要定位网站的目标关键词之外,还需要给网站选择几个长尾词,而且在优化的过程中,做好长尾关键词的排名也是非常重要的,当长尾词的排名上去了之后,也能够给网站带来可观的流 ...

  2. Android中GPRS定位的实现

    前段时间在弄GPRS定位的问题,使用google的地图定位,大家也都知道,google现在在中国境内有很多限制,而且国外刷机严重,难免将google的各种服务给刷掉,所以最终采用百度的定位系统,完美实 ...

  3. Android中级第五讲--GPRS定位的实现

    前段时间在弄GPRS定位的问题,使用google的地图定位,大家也都知道,google现在在中国境内有很多限制,而且国外刷机严重,难免将google的各种服务给刷掉,所以最终采用百度的定位系统,完美实 ...

  4. GPS/GPRS定位

    闲着没事,把GPS模块的使用学习了一下,就是传说中的NMEA-0183,我只使用最小帧GPRMC(Recommended Minimum Specific GPS/TRANSIT Data),下图是我 ...

  5. iOS14 Widget开发踩坑(五)定位与地图的使用

    iOS14 Widget开发踩坑(五)定位与地图的使用 前言 分析 实现案例 地图 定位 问题 适配黑暗模式 2022年12月15日已解决 中心点偏移问题 2022年12月19日已解决 延迟问题 本篇 ...

  6. CSS基础「五」定位

    本篇文章为 CSS 基础系列笔记第五篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...

  7. CSS基础: 五种定位以及定位叠放次序

    前面看到浮动其实可以让某个盒子模块在某个位置,但是为什么还要右定位? 其实很简单,因为浮动有些定位是解决不了的,比如看下图: 在滑动的时候,你发现了没有,那就是标记的地方,拉动网页都在顶部和侧面,如果 ...

  8. LBS 和 GPRS 定位移动位置比较

    名词释义: 基站定位一般应用于手机用户,手机基站定位服务又叫做移动位置服务(LBS--Location Based Service),它是通过电信移动运营商的网络(如 GSM 网)获取移动终端用户的位 ...

  9. python-selenum3 第五天定位——不常用定位与css定位详

    使用tag来定位 tag定位的是标签,不常用 例如:百度的输入框标签是input 最终会报错,因为百度首页input标签太多了 driver = webdriver.Firefox(executabl ...

最新文章

  1. Oracle数据库相关命令
  2. Lucene教程具体解释
  3. 2022-03-19
  4. 【CV冬季划】终极进阶,超30个项目实战+3本书+3年知识星球
  5. python3连接mysql使用mysqldb_Python3 连接Mysql数据库
  6. javaone_JavaOne 2012:NetBeans.Next –未来路线图
  7. 在项目中使用fastreport_如何在项目管理中使用里程碑
  8. Debug和Realease版本的区别
  9. IT行业趋势前沿:SOA和开源
  10. python调用PostgreSQL 11
  11. PHP定界符的使用既注意事项
  12. asp.net的一些对话
  13. 重庆高清卫星地图(含道路标签数据叠加)
  14. itil 容量管理流程_ITIL的十个核心管理流程
  15. 华为防火墙配置(双机热备)
  16. Epub电子书格式(四)
  17. MapReducer Counter计数器的使用,Combiner ,Partitioner,Sort,Grop的使用,
  18. CENTOS6 安装配置 pptpd 心得
  19. android 全景拼接软件,这款全景图片拼接软件很强大
  20. 大数据时代的新闻变革

热门文章

  1. eBay电子商务模式
  2. 玩csgo笔记本配置要求是什么
  3. html5 射门小游戏,HTML5简单的投篮小游戏
  4. 快速了解helmet的使用
  5. 简单的系统登录设计思路【登陆界面设计】
  6. qt撤销与回退_Git版本控制教程 - Git查阅、撤销修改和版本回退
  7. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
  8. 【visum工作笔记】之九
  9. 城市出行半径大数据报告:一线城市通勤压力大 境外游最爱去泰国
  10. pandas链接mysql数据库读取和存入