- 浏览: 562287 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
0759cxz:
good job!
Android 同时使用多个library时的问题 -
zhouxiaoli521:
lgj452555712 写道cursor 没有关闭,最好加上 ...
Android sqlite中判断某个表是否存在方法 -
lgj452555712:
cursor 没有关闭,最好加上finally 后关上fina ...
Android sqlite中判断某个表是否存在方法 -
zhouxiaoli521:
zhouxiaoli521 写道weinifk 写道publi ...
StringBuffer的setLength -
zhouxiaoli521:
weinifk 写道public static void ma ...
StringBuffer的setLength
package com.yy; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import android.content.Context; import android.location.Location; import android.location.LocationManager; public class GetCity { /** * 借助Google MAP 通过用户当前经纬度 获得用户当前城市 */ static final String GOOGLE_MAPS_API_KEY = "abcdefg"; private LocationManager locationManager; private Location currentLocation; private String city="全国"; public GetCity(Context context) { this.locationManager = (LocationManager) context .getSystemService(Context.LOCATION_SERVICE); //只是简单的获取城市 不需要实时更新 所以这里先注释 // this.locationManager.requestLocationUpdates( // LocationManager.GPS_PROVIDER, 1000, 0, // new LocationListener() { // public void onLocationChanged(Location loc) { // //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发 // // Save the latest location // currentLocation = loc; // // Update the latitude & longitude TextViews // System.out // .println("getCity()" // + (loc.getLatitude() + " " + loc // .getLongitude())); // } // // public void onProviderDisabled(String arg0) { // System.out.println(".onProviderDisabled(关闭)"+arg0); // } // // public void onProviderEnabled(String arg0) { // System.out.println(".onProviderEnabled(开启)"+arg0); // } // // public void onStatusChanged(String arg0, int arg1, // Bundle arg2) { // System.out.println(".onStatusChanged(Provider的转态在可用、" + // "暂时不可用和无服务三个状态直接切换时触发此函数)"+ // arg0+" "+arg1+" "+arg2); // } // }); currentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (currentLocation == null) currentLocation = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); } /** * 开始解析 */ public void start() { if(currentLocation!=null){ new Thread(){ public void run(){ String temp=reverseGeocode(currentLocation); if(temp!=null&&temp.length()>=2) city=temp; } }.start(); }else{ System.out.println("GetCity.start()未获得location"); } } /** * 获得城市 * @return */ public String getCity(){ return city; } /** * 通过Google map api 解析出城市 * @param loc * @return */ public String reverseGeocode(Location loc) { // http://maps.google.com/maps/geo?q=40.714224,-73.961452&output=json&oe=utf8&sensor=true_or_false&key=your_api_key String localityName = ""; HttpURLConnection connection = null; URL serverAddress = null; try { // build the URL using the latitude & longitude you want to lookup // NOTE: I chose XML return format here but you can choose something // else serverAddress = new URL("http://maps.google.com/maps/geo?q=" + Double.toString(loc.getLatitude()) + "," + Double.toString(loc.getLongitude()) + "&output=xml&oe=utf8&sensor=true&key=" + GOOGLE_MAPS_API_KEY); // set up out communications stuff connection = null; // Set up the initial connection connection = (HttpURLConnection) serverAddress.openConnection(); connection.setRequestMethod("GET"); connection.setDoOutput(true); connection.setReadTimeout(10000); connection.connect(); try { InputStreamReader isr = new InputStreamReader(connection .getInputStream()); InputSource source = new InputSource(isr); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); XMLReader xr = parser.getXMLReader(); GoogleReverseGeocodeXmlHandler handler = new GoogleReverseGeocodeXmlHandler(); xr.setContentHandler(handler); xr.parse(source); localityName = handler.getLocalityName(); System.out.println("GetCity.reverseGeocode()"+localityName); } catch (Exception ex) { ex.printStackTrace(); } } catch (Exception ex) { ex.printStackTrace(); System.out.println("GetCity.reverseGeocode()"+ex); } return localityName; } /** * The final piece of this puzzle is parsing the xml that is returned from * google’s service. For this example I am using the java SAX (simple api * for xml) parser. The final class to show here is * GoogleReverseGeocodeXmlHandler. In my example, I only want the name of * the city the user is in, so my XmlHandler class I’m about to show only * parses that piece of information. If you want to grab more complete * information (I’ll also give an example file that contains the XML * returned by Google), you’ll have to add more to this class * * @author Administrator * */ public class GoogleReverseGeocodeXmlHandler extends DefaultHandler { private boolean inLocalityName = false; private boolean finished = false; private StringBuilder builder; private String localityName; public String getLocalityName() { return this.localityName; } @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); if (this.inLocalityName && !this.finished) { if ((ch[start] != '\n') && (ch[start] != ' ')) { builder.append(ch, start, length); } } } @Override public void endElement(String uri, String localName, String name) throws SAXException { super.endElement(uri, localName, name); if (!this.finished) { if (localName.equalsIgnoreCase("LocalityName")) { this.localityName = builder.toString(); this.finished = true; } if (builder != null) { builder.setLength(0); } } } @Override public void startDocument() throws SAXException { super.startDocument(); builder = new StringBuilder(); } @Override public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { super.startElement(uri, localName, name, attributes); if (localName.equalsIgnoreCase("LocalityName")) { this.inLocalityName = true; } } } }
参考:
http://kryptonum.iteye.com/blog/363950
http://www.cnblogs.com/transmuse/archive/2010/12/31/1923358.html
http://blog.csdn.net/dadoneo/archive/2011/03/18/6259781.aspx
http://www.ispiders.net/?p=325
http://www.smnirven.com/?p=39#
发表评论
文章已被作者锁定,不允许评论。
-
Android NDK开发环境搭建_r8
2014-04-23 16:32 1081本文主内容: 1、 Android NDK 安装 2、 ... -
Android java.lang.VerifyError 异常解决办法
2014-04-01 13:58 4596通常这个异常的问题出现在jar包上 我的情况是 sdk ... -
Android —— 关于ADT 17的BuildConfig.DEBUG
2014-03-21 11:02 1156在日常开发中,我们使用android.util.Lo ... -
Android 让多个Fragment 切换时不重新实例化
2013-12-05 18:48 1457在项目中需要进行Fragment的切换,一直都是用repla ... -
android学习—— context 和 getApplicationContext()
2013-09-22 11:08 1931在android中常常会遇到与context有关的内容 浅 ... -
Android requestFeature() must be called before adding content
2013-07-08 17:18 2369E/AndroidRuntime( 408): androi ... -
Android onActivityResult和横屏
2013-06-20 16:48 1833做一个项目 页面强制横屏 两个activity需要交互 现 ... -
Android 无法加载fragment的问题
2013-06-17 14:42 2453在项目中继承了fragment 重写了构造函数 make ... -
android源码解读一(Context)
2013-04-27 19:16 1791Context类 Context是一个抽象类 publi ... -
Android 4.1 动态加载APK中的资源
2013-04-24 17:29 4188*** is not owned by the curr ... -
Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8
2013-04-15 15:45 1801过程中,增大对应AVD的 ... -
Android下面的MD5加密
2013-04-08 12:17 1000网上关于android下MD5加密的资料很多,但是测试了下 ... -
Android 调用系统应用程序信息(Application Info)界面
2013-03-15 18:30 1269“Android系统设置->应用程序->管理应用 ... -
Android Dialog背景透明和黑暗度
2013-03-14 18:20 4094设置透明度,主要设置的是dialog自身的透明度 ... -
全局监听SCREEN_ON和SCREEN_OFF的替代方法--监听屏幕解锁事件
2013-03-08 12:17 3039在做一个程序的时候,需要时刻保持某一服务是启动的, ... -
Android 退出应用程序
2013-01-21 10:53 924android.os.Process.killProcess ... -
Android控件WebView(浏览器)常用功能(图片、缩放)例子介绍
2012-11-06 11:03 2546Android系统默认提供WebView控件(view)来在应 ... -
Android ProgressBar使用.9图在部分android手机上显示异常!
2012-11-05 10:18 2169写道 我使用的是progressbar.xml配置文 ... -
Android 同时使用多个library时的问题
2012-10-29 12:40 1618剧情是这样,我的app要使用两个library,如:Li ... -
android圆形进度条ProgressBar颜色设置
2012-07-29 15:14 1361总结的挺全面 http://aichixihongshi.i ...
相关推荐
这就是在Android中获取当前经纬度和地理位置的基本步骤。通过结合Location API和Geocoder,我们不仅可以获得设备的精确位置,还能获取到与该位置相关的详细地址信息。这个过程对于实现导航、定位、位置跟踪等功能至...
在Android开发中,获取设备的当前经纬度是常见的需求,这通常用于实现定位服务,比如导航、地图应用或者提供基于位置的服务。以下将详细介绍两种主要的获取方法:GPS(全球定位系统)和网络定位,以及如何通过...
在Android开发中,有时我们需要根据用户的当前位置(经纬度)来获取用户所在的城市信息。这个功能在许多应用中都很常见,例如天气预报、导航或者个性化推荐等。以下是一个使用Java和Android SDK实现的实例代码,通过...
在Android开发中,获取用户当前的经纬度和城市信息是常见的需求,这通常用于实现位置服务,例如导航、天气预报等。本篇文章将详细介绍如何通过Android原生SDK获取这些信息,包括GPS定位和WiFi定位两种方式。 首先,...
4. **获取经纬度**:首先,你需要通过LocationManager或FusedLocationProviderClient来获取用户的当前位置。使用`requestLocationUpdates()`方法监听位置更新,然后从Location对象中提取经纬度。 5. **反向地理编码...
总之,“LBStest”项目通过集成百度地图SDK,实现了在Android应用中获取并显示设备的经纬度和街道信息。这个过程中涉及的关键技术包括Android权限管理、地图组件的使用、定位监听以及与百度地图API的交互。对于...
在网络定位中,可以通过经纬度信息查询百度地图API的反地理编码服务,获取到具体的位置信息,如街道、城市等。同时,如果设备支持GPS,还可以获取更精确的卫星定位数据。 在Android项目中,`AndroidManifest.xml`...
在Android开发中,"android城市列表选择、定位"是一个常见的需求,涉及到用户界面设计、数据管理以及地理位置服务等多个方面。以下将详细解析这个主题中的关键知识点。 首先,**城市列表**是应用程序中常见的一种...
在Android开发中,有时我们需要获取用户的地理位置信息,例如地名和城市名,这可以通过集成百度地图API来实现。本文将详细介绍如何在Android应用中利用百度API获取地名和城市名,以及相关的步骤和技术要点。 首先,...
在Android开发中,获取设备的当前位置以及地区名称是常见的需求,比如用于导航、天气查询或者个性化服务等。本文将深入探讨如何在Android应用中实现这一功能,主要涉及以下几个知识点: 1. **Android权限管理**: ...
在Android平台上,开发一个能够测量手机经纬度的工具是一项常见的任务,这主要涉及到地理位置服务的使用。本项目名为“Android简单的测量手机经纬度的工具”,它利用了Android系统的定位服务来获取设备的地理坐标,...
在Android开发中,获取用户当前所在城市的名字是一个常见的需求,主要应用于天气预报、导航、个性化服务等场景。本文将详细讲解如何实现这一功能。 首先,我们需要理解Android中的位置定位服务。Android提供了`...
请求参数通常包括城市的经纬度或城市名,以及可能的API密钥。 2. **获取并解析响应**: 一旦请求发送,API会返回一个JSON或XML格式的响应,包含天气数据。使用Gson、Jackson或Android自带的JsonParser等库解析这个...
使用该SDK,开发者可以在Android应用中轻松集成定位功能,获取到用户当前的经纬度坐标,并根据这些坐标解析出具体地址。 基站定位的原理是,每个移动通信基站都有一个特定的识别码和覆盖范围。当手机连接到基站时,...
在Android平台上,手机通讯录是用户管理联系人信息的核心组件,而携程客户端的城市列表选择功能则是旅行应用中不可或缺的一部分。这两个看似不相关的模块实际上都涉及到Android应用开发中的多个关键技术点,下面将对...
在Android开发中,实现“仿美团城市定位选择”的功能是一项常见的需求,这涉及到地理定位、UI设计以及数据管理等多个方面。下面将详细讲解这个过程中的关键知识点。 首先,我们需要了解地理定位的基础。在Android中...
- **手机SDK**:部分智能手机操作系统,如Android和iOS,提供了获取当前基站信息的API,开发者可以通过编程获取并解析这些信息,然后结合其他服务查询更详细的位置信息。 - **信号扫描工具**:有一些软件应用能够...
Android提供了SQLite数据库作为本地数据存储的选择,开发者可以创建一个包含城市名、经纬度、时区等信息的表,然后通过查询来获取所需的城市数据。另外,考虑到性能和内存管理,可以使用ContentProvider或者LiveData...
在Android系统中,我们可以利用定位服务来获取设备当前的经纬度信息。 1. **GPS(全球定位系统)获取经纬度** GPS是全球范围内的卫星导航系统,能够提供实时、精确的位置信息。在Android中,我们可以通过`...