`
104zz
  • 浏览: 1507752 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

android基于Gps 定位和基站定位获取经纬度

阅读更多

 

一:新建MyLocationManager.java类,本类是为了代码架构方便把地位经纬度的代码在这类中实现然后通过回调方法,在activity中显示;

package com.android.location;

import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;

public class MyLocationManager {
	private static Context mContext;
	private LocationManager gpsLocationManager;
	private LocationManager networkLocationManager;
	private static final int MINTIME = 2000;
	private static final int MININSTANCE = 2;
	private static MyLocationManager instance;
	private Location lastLocation = null;
	private static LocationCallBack mCallback;

	public static void init(Context c, LocationCallBack callback) {
		mContext = c;
		mCallback = callback;
	}

	private MyLocationManager() {
		// Gps 定位
		gpsLocationManager = (LocationManager) mContext
				.getSystemService(Context.LOCATION_SERVICE);
		Location gpsLocation = gpsLocationManager
				.getLastKnownLocation(LocationManager.GPS_PROVIDER);
		gpsLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
				MINTIME, MININSTANCE, locationListener);
		// 基站定位
		networkLocationManager = (LocationManager) mContext
				.getSystemService(Context.LOCATION_SERVICE);
		Location networkLocation = gpsLocationManager
				.getLastKnownLocation(LocationManager.GPS_PROVIDER);
		networkLocationManager.requestLocationUpdates(
				LocationManager.NETWORK_PROVIDER, MINTIME, MININSTANCE,
				locationListener);
	}

	public static MyLocationManager getInstance() {
		if (null == instance) {
			instance = new MyLocationManager();
		}
		return instance;
	}

	private void updateLocation(Location location) {
		lastLocation = location;
		mCallback.onCurrentLocation(location);
	}

	private final LocationListener locationListener = new LocationListener() {

		public void onStatusChanged(String provider, int status, Bundle extras) {
		}

		public void onProviderEnabled(String provider) {
		}

		public void onProviderDisabled(String provider) {
		}

		public void onLocationChanged(Location location) {
			updateLocation(location);
		}
	};

	public Location getMyLocation() {
		return lastLocation;
	}

	private static int ENOUGH_LONG = 1000 * 60;

	public interface LocationCallBack {
		/**
		 * 当前位置
		 * 
		 * @param location
		 */
		void onCurrentLocation(Location location);
	}

	public void destoryLocationManager() {
		gpsLocationManager.removeUpdates(locationListener);
		networkLocationManager.removeUpdates(locationListener);
	}
}
   

 

二:在LocationActivity 中实现LocationCallBack接口,如下:

package com.android.location;

import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.widget.TextView;
import com.android.fzmap.R;
import com.android.location.MyLocationManager.LocationCallBack;

public class LocationActivity extends Activity implements LocationCallBack {

	private TextView desText;
	private MyLocationManager mLocation;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		desText = (TextView) this.findViewById(R.id.text);
		MyLocationManager.init(LocationActivity.this.getApplicationContext(),
				LocationActivity.this);//初始化
		mLocation = MyLocationManager.getInstance();//获取实例

	}

	//回调定位信息
	public void onCurrentLocation(Location location) {
		if (location != null) {
			// 显示定位结果
			desText.setText("当前经度:" + location.getLongitude() + "\n当前纬度:"
					+ location.getLatitude());
		}
	}

	// 关闭程序也关闭定位
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		mLocation.destoryLocationManager();
	}

}
   

三:AndroidManifest.xml中不要忘了要添加访问网络和启动定位等的几个权限

 

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
 

 

四:效果如下图:


  • 大小: 22.5 KB
分享到:
评论
4 楼 jo_nes 2015-08-06  
就一个GPS定位,别忽悠人啊
3 楼 zhanglfat 2013-07-30  
基站个毛,不要误导大家
2 楼 lonuery 2013-05-20  
楼主我想问一下,有时候我们通过上面的这种方法获取基站定位数据时,在有网络的情况下,也无法保证每次都能够正常的获取经纬度数据,这个是什么情况呢?求解答!
1 楼 Will.Du 2013-01-14  
挺好,本来想自己整合两种方式,看了你的,我就不用费事儿了。。。

相关推荐

    android 基于基站,apn,gps,wifi,network 根据不同手机sim卡获取经纬度

    标题提到的“基于基站,APN,GPS,WiFi,Network 根据不同手机SIM卡获取经纬度”涉及了多种定位技术,每种都有其特性和应用场景。下面将详细介绍这些技术以及如何在Android中实现。 首先,我们来了解几种主要的定位...

    安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip

    这个压缩包“安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip”提供了一个实践示例,展示了如何在Android平台上实现基于GPS和WIFI的定位功能。下面将详细讲解这两个定位技术及其在源码中的应用。 1. GPS...

    Android应用源码之androidGPS及WIFI基站定位坐标源码_androidGPS.zip

    这份"Android应用源码之androidGPS及WIFI基站定位坐标源码"提供了实现这两种定位方式的详细示例,帮助开发者更好地理解和运用到自己的项目中。 一、Android GPS定位 Android系统通过Google Play服务提供的Location ...

    androidGPS及WIFI基站定位坐标源码.zip

    这份“androidGPS及WIFI基站定位坐标源码.zip”压缩包包含了一些实现这两种定位方式的源代码,对于学习Android定位机制非常有帮助。接下来,我们将深入探讨这两种定位方法及其在源码中的实现细节。 1. GPS定位: ...

    GPS定位和基站定位

    Android系统提供了丰富的API接口来支持GPS(全球定位系统)和基站定位这两种主流的定位方式。本文将深入探讨这两种定位技术的工作原理、优缺点以及在实际应用中的使用。 GPS定位是通过接收来自多个地球轨道上的GPS...

    android手机获取gps和基站的经纬度地址

    在Android系统中,获取GPS(全球定位系统)和基站(Cell Tower...理解和掌握如何利用GPS和基站获取经纬度,对于构建基于位置的应用至关重要。通过实践和不断探索,开发者可以创建出更加精准和用户友好的地理位置应用。

    Android应用实现GPS定位返回经纬度Demo

    在Android平台上,开发一款应用以实现GPS定位并获取经纬度值是常见的需求。这个"Android应用实现GPS定位返回经纬度Demo"就是一个实例,它演示了如何有效地从Android系统的Location服务中获取地理位置信息。下面我们...

    GPS定位(经纬度获取)

    9. **误差处理**:GPS定位可能存在误差,可以通过结合其他定位技术(如Wi-Fi、基站定位)进行融合定位,提高精度。此外,还可以使用差分校正或地理围栏技术来进一步优化定位结果。 在实际应用中,开发者还需要考虑...

    Android的基站、WIFI、GPS定位集合【源码】.zip

    - 使用`LocationManager`和`LocationListener`进行GPS、WIFI和基站定位的示例代码。 - 用于解析基站信息的工具类。 - 基于WIFI指纹的定位算法实现。 - 混合定位策略的管理类,负责根据环境动态切换定位方式。 - 示例...

    androidgps基站与WIFI定位源码.zip

    本资源“androidgps基站与WIFI定位源码.zip”提供了一套实现GPS、基站和Wi-Fi定位功能的源代码,非常适合Android开发者学习和参考。 首先,我们要理解Android系统中的定位机制。Android提供了Location API,这是一...

    android经纬度的获取

    总结来说,Android获取经纬度有多种方式,包括GPS、网络定位和离线地图数据。在实际应用中,根据场景和用户需求,选择合适的定位策略以达到最佳的定位效果和用户体验。同时,注意处理权限请求和位置隐私问题,遵守...

    android GPS和基站定位程序及源码.rar.rar

    在Android平台上,GPS(全球定位系统)和基站定位是两种主要的移动设备定位技术。GPS定位依赖于天空中的卫星信号,而基站定位则是通过测量手机与周围基站的信号强度来估算位置。这两种方法各有优缺点,GPS通常提供更...

    android 基站定位 返回定位的城市

    在Android开发中,基站定位是一种常见的获取用户地理位置的方法,它主要依赖于移动设备与周围基站之间的信号强度来确定位置。这种技术尤其适用于GPS信号不佳或者无法接收到GPS信号的环境,如室内。在这个名为...

    GPS_gps定位_基于GPS邓永兴_threw23m_GPS基站_android_

    本文将深入探讨“GPS定位_基于GPS邓永兴_threw23m_GPS基站_android”这一主题,主要关注如何利用GPS、基站以及网络进行精确定位,并结合Android平台实现。 首先,GPS(Global Positioning System)是一种通过接收多...

    Android应用源码之androidGPS及WIFI基站定位坐标源码-IT计算机-毕业设计.zip

    在Android应用开发中,GPS(全球定位系统)和WIFI基站定位是常见的定位技术,用于获取设备的地理位置信息。这份毕业设计源码提供了一个深入理解这两种定位方式的实践平台。以下将详细介绍这两种定位方法及其在...

    Android 获取当前经纬度

    在Android开发中,获取设备的当前经纬度是常见的需求,这通常用于实现定位服务,比如导航、地图应用或者提供基于位置的服务。以下将详细介绍两种主要的获取方法:GPS(全球定位系统)和网络定位,以及如何通过...

    android 基站定位程序

    在Android平台上,基站定位是一种基于移动通信网络的定位技术,主要利用手机与周围基站之间的信号交互来确定设备的位置。此技术对于那些GPS信号无法获取或者信号弱的环境(如室内)尤其有用。以下是对"android 基站...

    android 基站、WIFI、GPS定位集合【源码】

    在Android平台上,实现精准的位置服务是开发者们常常面临的需求,这通常涉及到三种主要的定位技术:基站定位、Wi-Fi定位和GPS(全球定位系统)定位。这篇内容将深入探讨这些定位方式以及它们在源码中的实现。 1. **...

Global site tag (gtag.js) - Google Analytics