Android Geocoder(位置解析)
Android中提供GPS定位服务,同时开发者可以对获得的位置信息进行解析,可以获得位置的详细信息。
1.gps定位
在Eclipse中建立android应用程序。android sdk中提供了locationmanager来获得系统提供的定位服务,可以通过gps、network等定位。通过下面的代码能够获取location对象,而通过location可以获得经纬度信息。
LocationManager loactionmanager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
tv_msg=(TextView)findViewById(R.id.textView1);
Criteria criteria=new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider=loactionmanager.getBestProvider(criteria, true);
Location location=loactionmanager.getLastKnownLocation(provider);
获取服务
通过Criteria为对象指定一些参数。criteria提供若干方法:
(1)public void setAccuracy(int accuracy)
位置解析的精度。Criteria.Accuracy_Fine 精确模式,Criteria.Accuracy_Coarse 模糊模式。
(2)public void setAltitudeRequired(boolean altitude)
是否提供海拔高度信息
(3)public void setBearingRequired(boolean)
是否提供方向信息
(4)public void setPowerRequirement(int level)
电池消耗,无、低、中、高,参数 Criteria. NO_REQUIREMENT, Criteria. POWER_LOW, Criteria.POWER_MEDIUM, or Criteria. POWER_HIGH
(5) public void setCostAllowed(boolean)
是否允许运行商计费。
2.gps位置解析
以前进行位置解析的时候,有人通过访问Google提供的服务进行位置解析,那样真的比较耗时,对于手机用户来说,体验真的很重要,今天无意中看见可以通过别的方法来进行位置的解析。android sdk 中提供了 Geocoder类来进行位置的解析。通过geocoder的getFromLocation(double lattitude,double longtitude,int maxresults)来获取地址列表,三个参数分别为:纬度、经度、返回的结果数。同时geocoder的getlocationfrom方法是同步的,因此,它们进行查找时将会阻碍线程,所以不应该放入UI线程,应该放入后台,也就是通过异步线程来实现。
public class GeocodeAddress extends AsyncTask<Location, Void, String>
{ @Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected String doInBackground(Location... params) {
// TODO Auto-generated method stub
if(params[0]!=null)
{
Geocoder geocoder=new Geocoder(MainActivity.this);
try {
List<Address> address=geocoder.getFromLocation(params[0].getLatitude(), params[0].getLongitude(), 1);
msg="";
if(address.size()>0)
{
msg+="经度:"+String.valueOf(address.get(0).getLongitude()*1E6)+"\n";
msg+="纬度:"+String.valueOf(address.get(0).getLatitude()*1E6)+"\n";
msg+="国家:"+address.get(0).getCountryName()+"\n";
msg+="省:"+address.get(0).getAdminArea()+"\n";
msg+="城市:"+address.get(0).getLocality()+"\n";
msg+="名称:"+address.get(0).getAddressLine(1)+"\n";
msg+="街道:"+address.get(0).getAddressLine(0);
return msg;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
if(result!=null&&result!="")
{
tv_msg.setText(result);
}
} }
位置解析
这里的geoceAddress 是继承asynctask异步类,参数分别为:location,传进来的参数类型;Void,异步线程处理的进度,String,返回的结果类型。
doInBackground(Params) :用来处理比较耗时的操作,返回结果
onPostExecute:获取处理的结果,并可以进行ui的更新。
onProgressUpdate:数据处理的进度
3.位置反向解析
位置反向解析,是指通过位置信息获取经纬度地址。
List<Address> geoaddress= geocoder.getFromLocationName(String locationname, int maxresult);
参数:locationname:位置的名称信息,如南京大学,北京大学等。
maxresults:返回的结果数。从1到5.
double lattitude=geoaddress.get(0).getLatitude();//获取纬度
double longtitude=geoaddress.get(0).getLongitude();//获取经度
更多详细,请参照androidsdk文档。
Android Geocoder(位置解析)的更多相关文章
- Android实现XML解析技术
转载:Android实现XML解析技术 本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为 ...
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- Android ViewDragHelper完全解析 自定义ViewGroup神器
Android ViewDragHelper完全解析 自定义ViewGroup神器 转载请标明出处: http://blog.csdn.net/lmj623565791/article/detai ...
- Android ActionBar全然解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc.我翻译之后又做了些加工 ...
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
Android DiskLruCache完全解析,硬盘缓存的最佳方案 概述 记得在很早之前,我有写过一篇文章Android高效加载大图.多图解决方案,有效避免程序OOM,这篇文章是翻译自Andro ...
- 【Android开发精要笔记】Android组件模型解析
Android组件模型解析 Android中的Mashup 将应用切分成不同类别的组件,通过统一的定位模型和接口标准将他们整合在一起,来共同完成某项任务.在Android的Mashup模式下,每个组件 ...
- 【转】Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- Android View系统解析(下)
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/38426471(来自singwhatiwanna的csdn博客) Androi ...
- 二、Android XML数据解析
XML,可扩展标记语言.可以用来存储数据,可以看做是一个小型的数据库,SharedPreference就是使用XML文件存储数据的,SQLite底层也是一个XML文件,而在网络应用方面,通常作为信息的 ...
随机推荐
- Linux 挂载命令 --mount
1.挂载光盘命令 mount : mount [-t vfstype] [-o options] device dir mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点 -t ...
- html5 音频
目前,web页面上没有标准的方式来播放音频文件,大多数的音频文件是使用插件来播放,而众多的浏览器使用了不同的插件.而html5的到来,给我们提供了一个标准的方式来播放web中音频文件,用户不再为浏览器 ...
- IT定理:摩尔定理,安迪-比尔定理,反摩尔定理
前两天在网上不经意间搜到了一本吴军的<浪潮之巅>,讲的是现代国际上计算机界的各大公司的兴衰沉浮,包括AT&T公司与IBM等等,把它当作IT历史书看,到现在已经看了一部分了.其中,我 ...
- 转化json
/// <summary> /// 转换成JSON字符串 /// </summary> /// <param name="jsonObject"> ...
- Git入门——基础知识问答
问题一:为什么要选择Git作为Android开发的版本控制工具? 答:1)git是android项目和社区的统一语言. 2)高通版本发布频繁,需要与平台及时同步,快速re ...
- T4模板试水篇1_入门
T4模板作为VS自带的一套代码生成器,功能有多强大我也不知道,最近查找了一些资料学习一下,做个笔记 更详细的资料参见: MSDN: http://msdn.microsoft.com/zh-cn/li ...
- elasticsearch,http://ip:9200访问不到的解决办法
现在解压elasticsearch之后,启动,通过http://localhost:9200可以访问的到,但是http://ip:9200访问不到,怎么办呢?带你解决,带你飞 修改elasticsea ...
- 字符串在 UNICODE、MBCS编码下面的区别
1:SBCS (single byte character set)单字节字符集.在这种编码格式下,所有字符都用一个字节表示.ASCII码就是单字节字符.用“0”来表示一个字节的结束.2 :Unico ...
- (转+原)ipp "No dlls were found in the Waterfall procedure"
转自: http://blog.csdn.net/hua_007/article/details/9112909 1,吧 dll的目录放到系统环境变量中 intel 的官方推荐.验证是ok的. --- ...
- X-factor Chains(POJ3421 素数)
X-factor Chains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6212 Accepted: 1928 D ...