Android定位获得经纬度(手机位置服务和百度定位)

简介:
private double latitude = 0.0;
	private double longitude = 0.0;
<span style="white-space:pre">	</span>//利用手机位置服务定位
	void getLoaction() {
		final LocationManager locationManager = (LocationManager) getActivity()
				.getSystemService(Context.LOCATION_SERVICE);
		
		//创建一个criteria对象  
        Criteria criteria = new Criteria();     
        criteria.setAccuracy(Criteria.ACCURACY_COARSE);  
        //设置不需要获取海拔方向数据  
        criteria.setAltitudeRequired(false);     
        criteria.setBearingRequired(false);  
        //设置允许产生资费  
        criteria.setCostAllowed(true);     
        //要求低耗电  
        criteria.setPowerRequirement(Criteria.POWER_LOW);     
        String provider = locationManager.getBestProvider(criteria, false);     
        Log.i(TAG, "we choose "+ provider);  
        Location location = locationManager.getLastKnownLocation(provider);  
        //第一次获得设备的位置  
        updateLocation(location); 
        //重要函数,监听数据测试  
        locationManager.requestLocationUpdates(provider, 6000, 10,     
                       locationListener);     
		
	}
	
	 //创建一个事件监听器  
	private final LocationListener locationListener = new LocationListener() {
		public void onLocationChanged(Location location) {
			updateLocation(location);
		}

		public void onProviderDisabled(String provider) {
			updateLocation(null);
			Log.i(TAG, "Provider now is disabled..");
		}

		public void onProviderEnabled(String provider) {
			Log.i(TAG, "Provider now is enabled..");
		}

		public void onStatusChanged(String provider, int status, Bundle extras) {
		}
	};   
	      
	//获取用户位置的函数,利用Log显示  
	private void updateLocation(Location location) {
		Log.i(TAG, "updateLocation");
		if (location != null) {
			latitude = location.getLatitude();
			longitude = location.getLongitude();
			
			String oldLocation = MainUIActivity.mApplication.getLocation();
			String newLocation = longitude + "," + latitude;
			mCurCommunityPoint.setText(newLocation);
			newLocation = Utils.bd_encrypt(latitude, longitude);
			Log.i(TAG, "The location has changed.. " + newLocation);
			if (!newLocation.equals(oldLocation)) {
				mCurPageIndex = 1;
				mHandler.obtainMessage(GET_COMMUNITY_DATA,
						newLocation).sendToTarget();
			}
			
		}
	}
	//百度位置服务,百度定位sdk下载地址:http://developer.baidu.com/map/index.php?title=android-locsdk/guide/v5-0
	void getBaiduLoaction(){
		LocationClient mLocationClient = new LocationClient(getActivity());
		mLocationClient.registerLocationListener( new BDLocationListener() {
			
			@Override
			public void onReceiveLocation(BDLocation location) {
				onLocationChanged(location);
			}
		} );
		
		//注册监听函数
	    
	    LocationClientOption option = new LocationClientOption();
	    option.setLocationMode(LocationMode.Hight_Accuracy);//设置定位模式
	    option.setCoorType("gcj02");//返回的定位结果是百度经纬度,默认值gcj02
	    option.setScanSpan(5000);//设置发起定位请求的间隔时间为5000ms
	    option.setIsNeedAddress(true);//返回的定位结果包含地址信息
	    option.setNeedDeviceDirect(true);//返回的定位结果包含手机机头的方向
	    mLocationClient.setLocOption(option);
	    
	    mLocationClient.start();
	}
	
	/**
	 * 当位置发生变化时触发此方法
	 * 
	 * @param location 当前位置
	 */
	public void onLocationChanged(BDLocation location) {
		if (location != null) {
			// 显示定位结果
			Log.d(TAG, location.getLongitude() + "  " + location.getLatitude());
			latitude = location.getLatitude();
			longitude = location.getLongitude();
			
			String oldLocation = MainUIActivity.mApplication.getLocation();
			String newLocation = longitude + "," + latitude;
			mCurCommunityPoint.setText(newLocation);
			newLocation = Utils.bd_encrypt(latitude, longitude);
			Log.i(TAG, "The location has changed.. " + newLocation);
			if (!newLocation.equals(oldLocation)) {
				mCurPageIndex = 1;
				mHandler.obtainMessage(GET_COMMUNITY_DATA,
						newLocation).sendToTarget();
			}
		}
	}


从准确度来说百度还是比较靠谱的。

相关文章
|
9月前
|
Android开发 数据安全/隐私保护
安卓手机修改设备id, 安卓硬改一键新机,手机机型修改(伪装)
提供了完整的设备信息修改功能,包含设备模板配置、基础信息修改、网络信息修改、模拟器检测绕
|
9月前
|
存储 人工智能 文字识别
三款安卓手机word编辑器下载,Microsoft Word,wps office,Word手机版,手机word编辑查看阅读器,PDF转换器apk下载
WPS Office是一款功能强大的办公软件,支持文档编辑、表格处理和演示文稿制作,兼容多种格式并提供丰富的云服务。它具备低内存占用、快速运行的特点,支持跨设备同步与多人协作,内置海量模板及AI辅助功能,如智能写作和PPT自动生成。此外,还可扫描文件、编辑PDF并转换为其他格式,极大提升办公效率,适合手机用户便捷操作。
1029 1
|
10月前
|
数据采集 JSON 数据可视化
高德地图百度腾讯谷歌采集工具,可提取名称 地址 电话 手机号,精准autojs版下载
这是一款基于Auto.js开发的地图商家信息采集工具,支持高德、百度、腾讯和谷歌四大地图平台的数据抓取。可提取商家名称、地址、电话等关键信息
|
Ubuntu Linux Android开发
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
本文介绍了如何在Android设备上安装Termux和AnLinux,并通过这些工具运行Ubuntu系统和桌面环境。
4342 3
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
|
Android开发 数据安全/隐私保护 虚拟化
安卓手机远程连接登录Windows服务器教程
安卓手机远程连接登录Windows服务器教程
3713 5
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
1480 4
Android性能测试——发现和定位内存泄露和卡顿
|
安全 搜索推荐 Android开发
Android vs. iOS:解锁智能手机操作系统的奥秘####
【10月更文挑战第21天】 在当今这个数字化时代,智能手机已成为我们生活中不可或缺的伙伴。本文旨在深入浅出地探讨两大主流操作系统——Android与iOS的核心差异、优势及未来趋势,帮助读者更好地理解这两个平台背后的技术哲学和用户体验设计。通过对比分析,揭示它们如何塑造了我们的数字生活方式,并展望未来可能的发展路径。无论您是技术爱好者还是普通用户,这篇文章都将带您走进一个充满创新与可能性的移动世界。 ####
480 3
|
Web App开发 Android开发
利用firefox调试安卓手机端web
该教程详细介绍如何通过Firefox浏览器实现手机与电脑的远程调试。手机端需安装最新版Firefox,并按指定步骤设置完成;电脑端则需安装15版及以上Firefox。设置完成后,通过工具栏中的“远程调试”选项,输入手机IP地址即可连接。连接确认后,即可使用电脑端Firefox调试器调试手机上的Web信息。注意,调试前手机需提前打开目标网页。
1380 2
|
Android开发 iOS开发 UED
安卓与iOS的较量:谁才是智能手机市场的王者?
本文将深入探讨安卓和iOS两大智能手机操作系统之间的竞争关系,分析它们各自的优势和劣势。通过对比两者在市场份额、用户体验、应用生态等方面的表现,我们将揭示出谁才是真正的市场领导者。无论你是安卓粉丝还是iOS忠实用户,这篇文章都将为你提供一些有趣的观点和见解。
|
自然语言处理 定位技术 API
Android经典实战之如何获取图片的经纬度以及如何根据经纬度获取对应的地点名称
本文介绍如何在Android中从图片提取地理位置信息并转换为地址。首先利用`ExifInterface`获取图片内的经纬度,然后通过`Geocoder`将经纬度转为地址。注意操作需在子线程进行且考虑多语言支持。
1793 4

热门文章

最新文章