- 浏览: 572820 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
1.定位概念
在Android系统上实现定位主要是通过GPS或者是基于网络的定位方法。
GPS是精度最高的,但是它只在户外有用,并且很耗电,并且首次定位花费时间较长。
基于网络的定位利用通信网络蜂窝基站和Wi-Fi信号,这种定位方式在室内室外都能用,响应时间较短,耗电较少,但是精度较差。
为了在应用中获得用户的信息,你的LocationProvider可以是GPS或者基于网络,也可以两者都用。
2.请求位置更新
在Android中获取位置主要是通过回调函数LocationListener。
首先通过LocationManager的 requestLocationUpdates()方法注册监听器,向其中传入一个实现了LocationListener接口的对象。
你的 LocationListener对象中必须实现一些回调函数,当用户位置改变或者当服务状态改变时,LocationManager就会调用这些回调函数。
requestLocationUpdates()中的第一个参数指明了LocationProvider的类型,第二个参数是位置刷新时间间隔,第三个参数是通知的最小的改变距离。
如果第二个和第三个参数都设置成0就表示要尽可能频繁地请求位置通知。
最后一个参数是用户自己定义的实现了LocationListener接口的对象,它接收位置更新的回调。
如果想要同时利用GPS和网络定位,可以调用requestLocationUpdates()两次,第一个参数分别是GPS_PROVIDER和 NETWORK_PROVIDER。
3.权限设置
如果没有权限设置,程序在请求位置更新时将会失败。
// 对应网络定位
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
// 对于GPS定位
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
如果用NETWROK_PROVIDER, 那么需要声明 ACCESS_COARSE_LOCATION和INTERNET
如果用GPS_PROVIDER, 那么需要声明 ACCESS_FINE_LOCATION
ACCESS_FINE_LOCATION是包含了ACCESS_COARSE_LOCATION的,所以两者都用时可以只声明ACCESS_FINE_LOCATION。
4.Criteria用于查找最优Provider
应用程序可能需要获得最优的Provider,所以需要使用过滤条件Criteria 通过LocationManageer.getBestProvider(Criteria Criteria,boolean)来获取。
Criteria中的每个方法都是一个过滤条件
5.例子
在Android系统上实现定位主要是通过GPS或者是基于网络的定位方法。
GPS是精度最高的,但是它只在户外有用,并且很耗电,并且首次定位花费时间较长。
基于网络的定位利用通信网络蜂窝基站和Wi-Fi信号,这种定位方式在室内室外都能用,响应时间较短,耗电较少,但是精度较差。
为了在应用中获得用户的信息,你的LocationProvider可以是GPS或者基于网络,也可以两者都用。
2.请求位置更新
在Android中获取位置主要是通过回调函数LocationListener。
首先通过LocationManager的 requestLocationUpdates()方法注册监听器,向其中传入一个实现了LocationListener接口的对象。
你的 LocationListener对象中必须实现一些回调函数,当用户位置改变或者当服务状态改变时,LocationManager就会调用这些回调函数。
requestLocationUpdates()中的第一个参数指明了LocationProvider的类型,第二个参数是位置刷新时间间隔,第三个参数是通知的最小的改变距离。
如果第二个和第三个参数都设置成0就表示要尽可能频繁地请求位置通知。
最后一个参数是用户自己定义的实现了LocationListener接口的对象,它接收位置更新的回调。
如果想要同时利用GPS和网络定位,可以调用requestLocationUpdates()两次,第一个参数分别是GPS_PROVIDER和 NETWORK_PROVIDER。
3.权限设置
如果没有权限设置,程序在请求位置更新时将会失败。
// 对应网络定位
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
// 对于GPS定位
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
如果用NETWROK_PROVIDER, 那么需要声明 ACCESS_COARSE_LOCATION和INTERNET
如果用GPS_PROVIDER, 那么需要声明 ACCESS_FINE_LOCATION
ACCESS_FINE_LOCATION是包含了ACCESS_COARSE_LOCATION的,所以两者都用时可以只声明ACCESS_FINE_LOCATION。
4.Criteria用于查找最优Provider
应用程序可能需要获得最优的Provider,所以需要使用过滤条件Criteria 通过LocationManageer.getBestProvider(Criteria Criteria,boolean)来获取。
Criteria中的每个方法都是一个过滤条件
5.例子
package com.test.activity; import android.app.Activity; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.TextView; import com.test.R; /** * 定位例子 */ public class LocationActivity extends Activity implements LocationListener { private LocationManager locationManager; private TextView tvOutput; private String best; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mainactivity); // 从系统服务中获得位置管理器 locationManager = (LocationManager) this .getSystemService(LOCATION_SERVICE); tvOutput = (TextView) findViewById(R.id.location); // 获取最好的provider getBestProvider(); // 获取最近信息 Location location = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); showLocationInfo(location); // 每三秒刷新一次位置 locationManager.requestLocationUpdates(best, 3000, 8, this); } private void getBestProvider(){ // 定义规则 用于查找最适合的Criteria Criteria criteria = new Criteria(); // 免费的 criteria.setCostAllowed(false); // 精确要求 criteria.setAccuracy(Criteria.ACCURACY_FINE); // 获得最合适的提供者 best = locationManager.getBestProvider(criteria, true); } // 显示位置信息 public void showLocationInfo(Location location) { StringBuffer sb = new StringBuffer(""); if (location != null) { sb.append("\n 经度:" + location.getLongitude()); sb.append("\n 纬度:" + location.getLatitude()); } tvOutput.setText(sb.toString()); } // 位置改变时获得坐标 @Override public void onLocationChanged(Location location) { showLocationInfo(location); } // 暂停时删除更新位置 @Override protected void onPause() { super.onPause(); locationManager.removeUpdates(this); } // 恢复时请求更新位置 @Override protected void onResume() { super.onResume(); } @Override public void onProviderDisabled(String arg0) { showLocationInfo(null); } @Override public void onProviderEnabled(String provider) { showLocationInfo(locationManager.getLastKnownLocation(provider)); } @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { } }
- AndroidTest.zip (4.4 MB)
- 下载次数: 10
发表评论
文章已被作者锁定,不允许评论。
-
android BaseActivity与BaseFragment的封装
2016-05-19 15:06 9561 概述 多模块Activity+多Fragment 是开发 ... -
android ScrollView常用属性
2016-05-09 09:17 662android:scrollbars 设置滚动条显示。none ... -
android RecyclerView使用及详解
2016-05-04 10:35 28541.前言 话说RecyclerView已经面市很久,也在很多 ... -
android DialogFragment 创建对话框(官方推荐)
2016-04-29 14:22 8581、 概述 DialogFragment在android 3. ... -
android Intent Flags及Task相关属性
2016-04-26 09:15 568task是一个具有栈结构的容器,可以放置多个Activity实 ... -
android SQLite具体实例应用详解(SQLiteOpenHelper)
2016-04-18 19:24 766上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们 ... -
android SQLite3常用命令&语法
2016-04-18 19:01 568sqlite数据库只用一个文件就ok,小巧方便,所以是一个非常 ... -
android View绘制相关问题总结
2016-03-28 19:27 6371.View的绘制流程分几步 ... -
android Handler Looper MessageQueue机制的原理
2016-03-22 21:09 726andriod提供了Handler和Looper来满足线程间的 ... -
android Bitmap,BitmapFactory类图像处理
2016-03-16 16:28 2323BitMap代表一张位图,扩展名可以是.bmp或者.dib。 ... -
android 三类菜单(Option) (Context) (SubMenu)学习
2016-03-14 15:23 872在Android系统中,菜单可以分为三类:选项菜单(Optio ... -
android Sqlite数据库对象模型ORMLite框架学习
2016-03-11 15:24 670在Android项目中或多或少的都会使用数据库,为了提高我们的 ... -
android AsyncTask<参数,进度值类型,返回类型>学习
2016-03-10 14:45 1137AsyncTask和Handler对比 1 ... -
android 远程图片获取和本地缓存
2016-03-10 14:32 719概述 对于客户端——服 ... -
android onSaveInstanceState和onRestoreInstanceState学习
2016-03-10 10:08 746Android中的activity通过onSaveInst ... -
android Fragment生命周期和回退栈学习以及Fragment之间通信
2016-03-10 09:31 1490会涉及到Fragment如何产生,什么是Fragment,Fr ... -
android LruCache内存缓存学习(重写sizeOf方法)
2016-03-09 19:25 1015什么是缓存? 缓存技术原理就是把用户访问的所有对象看作一个全 ... -
android ListView中的convertView缓存及使用
2016-03-09 19:12 1662一、复用convertView 首先讲下ListView的原 ... -
android 从资源角度谈Android代码内存优化
2016-03-09 18:54 664开发人员如果在进行代码编写之前就有内存泄露方面的基础知识,那么 ... -
android startActivityForResult和setResult详情及Demo
2016-03-09 08:56 1004startActivityForResult与startAct ...
相关推荐
源码 博文链接:https://104zz.iteye.com/blog/1680811
第一个是网络定位,第二个是GPS定位,第三个是直接取缓存。LocationManager本身提供了选择最好的provider的方法: // 获取最好的定位方式 String provider = locationManager.getBestProvider(criteria, true); ...
这是一个用户定位的示例 Main 类用于演示获取Location Provider Main2 类用于演示获取最佳的Location Provider,两个类要修改Manifest.xml 文件才能分别运行
这时的定位方式为GPS,由于GPS定位慢,所以它不可能立即返回你一个Location对象,所以就返回null了。 **3.推荐locationManager.requestLocationUpdates();方法** LocationManager中设定监听位置变化的代码如下: ``...
LocationManager,实现了从网络中获取GPS信息的方法。
这是一个利用LocationManager定位的实例demo,可获取经纬度,国家名称,城市名称,街道等信息。详细介绍请移步:http://blog.csdn.net/xiong_it/article/details/46968477
Android_GPS_定位 在Android中进行GPS开发,需要涉及LocationManager、LocationProvider、Location三个核心类。
基于Android的GPS定位API函数(类)参数详解,包括:LocationManager,LocationListener,Location,GpsStatus.Listener,GpsStatus,GpsSatellite等
Locationmanager Locationmanager is a small wrapper for Location Tracker. Installation Add jitpackto your repositories in Project build.gradle : allprojects { repositories { ... maven { url ...
Android LocationManager 获取经纬度和卫星信息 配文代码 可帮助熟练使用Android自带的定位api
Android Studio 实训操作题(五)实验7LocationManager基本用法.docx
case GpsStatus.GPS_EVENT_FIRST_FIX: //第一次定位时间UTC int utc; utc=gpsStatus.getTimeToFirstFix(); //获取首次定位时间 String str; str="完成首次定位,耗时"+utc+...
import android.location.LocationManager;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.TextView; public class MainActivity extends Activ
android LocationManager 研究资料
多种GPS定位方式和定位研究开发心得,提供了百度定位 和 谷歌定位两种方式,基站、wifi、net定位。 google定位代码 package com.javenwong.google_gps; import android.app.Activity;import android.content....
摘要:Java源码,Android,Android源码 Android源码位置管理简单应用,涉及定位,LocationManager源代码下载,源码爱好者Java源码频道为您提供丰富的Android开发小实例,助想学习Android程序设计的朋友一臂之力,本...
关于LocationManager的代码实现
LocationManager,
使用LocationManager进行GPS定位,或渠道经度、纬度和海拔高度