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();
			}
		}
	}

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

时间: 2024-12-26 23:40:11

Android定位获得经纬度(手机位置服务和百度定位)的相关文章

与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器

原文:与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器 [索引页][源码下载] 与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器 作者:webabcd 介绍与众不同 windows phone 7.5 (sdk 7.1) 之设备 位置服务(GPS 定位) FM 收音机 麦克风 震动器 示例1.演示如何使用位置服务(GPS 定位

HTML5网页定位,并将位置绘在百度地图上

运行效果: 实现代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>HTML5定位</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <

百度定位sdk-android 通过IntentService来定时调用百度定位SDK,为什么只会执行一次

问题描述 android 通过IntentService来定时调用百度定位SDK,为什么只会执行一次 我使用的百度SDK版本是6.13清单文件中已经配置了服务和key 第一次调用时候能正常获取坐标,再次调用的时候就不会执行BDLocationListener监听程序. 求大神指点.获取坐标的代码: public class BaiduLocationClient extends LocationClient { @Overridepublic void init(Context context)

网易八方团队:位置服务是基础 会有延伸服务

网易科技讯 10月11日消息,网易八方是一个基于地理位置的移动社交平台,作为网易推出的又一个移动互联网产品,网易八方成为首款门户网站旗下的基于位置服务产品.面对业界和媒体的关注,网易八方团队表示,现阶段地理位置服务仍处于初级阶段,网易八方也只是一个基础服务产品,接下来还将延伸出更多的应用,网易八方将通过不断的尝试,找到最终合适国内用户需求的核心应用. 精彩观点:--网易公司已经有比较 丰富的互联网的经验,并且有很多自己的内容,我相信我们对用户的了解是非常深的.并且我们有非常久的手机产品开发经验.

视频-求助:急求啊!在Android端取得手机位置在服务端的匹配问题

问题描述 求助:急求啊!在Android端取得手机位置在服务端的匹配问题 小弟java程序猿,最近在做公司两个项目,一个是视频APP,它在后台上传的视频有一个地区属性,比如 湖南-长沙 : 那么在Android客户端用户登录时,可以通过GPS取得用户登录所在地,比如取得:湖南长沙望城县xxx区xxx街道...:那么需求就是在哪个地区登录的用户只能看哪个地区的视频:这样子我在服务端录入的时候给视频的地址是 "湖南-长沙":那么怎么跟Android端给我的地址来匹配判断呢? 当然我也想到先

手机LBS位置服务盘点

位置服务(LBS,Location Based Services)指的是通过移动终端和移动网络的配合,确定移动用户的实际地理位置,从而提供用户与位置相关的服务信息. 在美国,Foursquare为代表的以用户主动签到(check-in)为核心的位置签到服务(Location Check-in Service)重新定义了位置服务的内涵,掀起了新一轮移动互联网产业发展热潮,即以位置签到为核心的垂直型位置签到服务企业快速涌现并迅速发展,国内社交网站和微博服务提供商也纷纷更新移动互联网产品,以下月光博客

手机定位-新手求助,android百度定位textview没有显示地址

问题描述 新手求助,android百度定位textview没有显示地址 public class StartCanteenActivity extends Activity { private TextView locationInfoTextView = null; private Button startButton = null; private LocationClient locationClient = null; private static final int UPDATE_TI

手机定位-大牛请进,我有几个android百度定位的问题提问,,,

问题描述 大牛请进,我有几个android百度定位的问题提问,,, 这是代码,第一个问题也是最最重要的问题:为什么定位启动textview没有显示手机位置,第二个问题:如果不用点击button开始定位,APP启动后自动定位的代码是!!!第三个问题:请求网络获取手机所在位置的权限提醒弹窗怎么取消,给她权限自动通过请求...谢谢大牛了!!! 解决方案 首先你的locationClient的初始化有问题.怎么看你在**onDestory()**里面初始化的呢? 不点击button开始定位,就把触发定位

Android获取手机位置的实现代码_Android

本文实例为大家分享了Android获取手机位置的方法,供大家参考,具体内容如下 1.项目Src下创建...service包,然后新建GPSService类 package com.zebra.mobilesafe.service; import java.io.IOException; import java.io.InputStream; import android.app.Service; import android.content.Intent; import android.cont