`

GPS在Android的使用经验

阅读更多

GPS的开发、使用,有两个关键点:

1. 选择并激活合适的Provider;

2. 建立合理刷新机制。

 

下面是通用的方法,以“选择并激活合适的Provider”:

 

protected void getAndTraceLocation(){
		//geocoder = new Geocoder(this, Locale.getDefault());;
		geocoder = new Geocoder(this, Locale.ENGLISH);;
		// Acquire a reference to the system Location Manager
		locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

		Criteria criteria = new Criteria();
		criteria.setAccuracy(Criteria.ACCURACY_FINE);
		criteria.setAltitudeRequired(false);
		criteria.setBearingRequired(false);
		criteria.setCostAllowed(true);
		criteria.setPowerRequirement(Criteria.POWER_LOW);

		String provider = locationManager.getBestProvider(criteria, true);
		if(provider!=null){
			Log.i(TAG, "GPS provider is enabled:" + provider.toString());
			// Get the location
			latestLocation = locationManager.getLastKnownLocation(provider);
			updateWithNewLocation(latestLocation);
	
			// Register the listener with the Location Manager to receive location
			locationManager.requestLocationUpdates(provider, 1000, 5, locationListener);
		}else{
			Log.i(TAG, "No GPS provider found!");
			updateWithNewLocation(null);
		}
	}
	protected final LocationListener locationListener = new LocationListener() {
		public void onLocationChanged(Location location) {
			Log.i(TAG, "location changed to: " + location);
			updateWithNewLocation(location);
		}
		public void onProviderDisabled(String provider) {}
		public void onProviderEnabled(String provider) {}
		public void onStatusChanged(String provider, int status, Bundle extras) {}
	};

 

需要注意的是:

这里的locationManager.getBestProvider(criteria, true) 之后,必须进行是否为null的判断,否则在终端禁用GPS和网络以后会出现NPE异常。

 

注意这里回调了一个通用的updateWithNewLocation(latestLocation)方法,用户只要实现这个方法,即可实现第二个关键点,即“建立合理刷新机制”。

 

下面是最简单的例子:

 

@Override
protected void updateWithNewLocation(Location location) {
    	super.updateWithNewLocation(location);
    	
		String location_msg = context.getString(R.string.msg_no_gps);
		if (location != null) {
			location_msg = location.getLatitude() + "," + location.getLongitude();			
			Log.i(TAG, location_msg);
		} else {
			Log.i(TAG, location_msg);
		}
		
		location_msg = String.format(_location_msg, location_msg);
		_location.setText(location_msg);
	}
 

完毕!

分享到:
评论

相关推荐

    Android 强制开启GPS

    然而,有些开发者可能需要在没有用户交互的情况下强制开启GPS,这涉及到对Android API的深入理解和使用。以下是对这个主题的详细阐述: 首先,Android提供了LocationManager服务,它允许应用请求位置更新并管理不同...

    android_hardware_gps GPS驱动

    综上所述,"android_hardware_gps GPS驱动"是一个针对全志平台、兼容Android 10系统的GPS硬件接口层实现,它包含了地面波动数据处理功能,确保了在复杂环境下的定位精度和稳定性。理解这些知识点对于开发和维护...

    android使用GPS获取当前地理位置

    在本文中,我们将深入探讨如何正确使用Android的GPS功能来获取地理位置,以及避免一些常见问题。 首先,避免使用`getLastKnownLocation`方法来直接获取当前位置。这个方法可能会返回null,因为它既用于获取当前地理...

    Android Ublox GPS 驱动

    在Android中,GPS HAL负责与硬件交互,获取GPS数据,并将其转化为上层应用可以理解和使用的格式。 Ublox是知名的GPS模块制造商,其产品广泛应用于各种移动设备。Android针对Ublox GPS模块的驱动通常包括以下几个...

    AndroidGPS定位源码

    在Android平台上,GPS(全球定位系统)定位是开发者常用的功能之一,用于获取设备的精确位置信息。本资源提供了Android GPS定位的实例源码,对于学习和理解如何在Android应用中集成GPS定位至关重要。通过分析这些...

    android模拟器使用gps定位

    本文将深入探讨如何在Android模拟器上使用GPS定位,并获取经纬度坐标数据。 首先,我们要明白Android模拟器如何模拟GPS定位。在Android Studio中,我们可以使用AVD(Android Virtual Device)管理器创建和管理...

    Android-Gps-Test.rar_GPS纬度_android_android gps test_androits gps

    在Android平台上,GPS(全球定位系统)是移动设备获取地理位置信息的重要途径。本文将深入探讨“Android-Gps-Test.rar”这个压缩包所涉及的GPS纬度、Android GPS测试以及如何利用Androits GPS测试应用来评估GPS性能...

    GPS Android底层驱动资料(附关键源码)

    在Android系统中,GPS(全球定位系统)是实现位置服务的关键组件。为了深入了解GPS Android底层驱动的工作原理,我们需要探讨以下几个核心知识点:JNI(Java Native Interface)、HAL(硬件抽象层)以及Java层与底层...

    Android GPS及filter实现

    在Android平台上,GPS(全球定位系统)是移动设备获取地理位置信息的重要途径。GPS技术通过接收来自卫星的信号来计算设备的精确位置。然而,由于多种因素,如信号干扰、多路径效应,GPS信号可能会出现不准确或跳变的...

    Android_Gps.zip_GPS_android_android gps_gps android

    总结来说,《Android_Gps.pdf》可能会涵盖以上这些主题,帮助开发者理解如何在Android平台上高效、准确地集成和使用GPS功能。无论你是GPS应用的初学者还是有经验的开发者,这份文档都将是一份宝贵的参考资料。

    Android GPS定位简单 DEMO

    使用GPS 定位,首先,需要在清单文件(AndroidManifest.xml)中注册获取定位的权限: <!-- GPS定位必须的权限 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> **1.获取位置...

    一个简单的android GPS DEMO代码

    Android系统要求应用在使用GPS或其他位置源之前必须获取相应的权限。在`<manifest>`标签内添加以下代码: ``` <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ``` `ACCESS_FINE_...

    Android GPS获得定位数据源代码

    在Android开发中,获取GPS定位数据是常见的需求,主要用于实现地图导航、位置服务等功能。本文将详细介绍如何通过源代码在Android设备上获取GPS定位信息,并将其存储到SQLite本地数据库中。 首先,Android系统提供...

    android Gps信号加强处理

    在Android系统中,GPS(全球定位系统)是设备获取地理位置信息的重要途径。然而,由于多种因素,如环境遮挡、天气状况或者硬件性能,手机可能会遇到GPS信号接收困难或者信号弱的问题。本篇将深入探讨如何解决这些...

    Android读取GPS数据demo

    在Android平台上,获取GPS(全球定位系统)数据是开发者经常需要处理的任务,特别是在开发地图应用、导航系统或者位置服务相关的应用程序时。这个“Android读取GPS数据demo”提供了一个简单的示例,帮助开发者理解...

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

    在Android中,我们通常使用`LocationManager`服务来请求GPS定位。源码中可能会包含以下关键组件: - `LocationManager`: 获取和管理定位服务,注册监听器以接收定位更新。 - `LocationListener`: 实现此接口,用于...

    Android获取GPS定位示例程序

    以上就是使用Android Studio开发GPS定位示例的基本步骤。这个"LocationDemo"项目为你提供了一个实际操作的起点,你可以在此基础上根据具体需求进行扩展,例如添加地图显示、实现室内定位、优化定位精度等。在实践中...

    android GPS架构之GPS的开启与关闭

    Android GPS 架构中的 GPS 开启与关闭是指在 Android 系统中如何启动和关闭 GPS 设备的过程。本文将详细介绍 GPS 的开启与关闭的代码实现、系统启动过程、数据库写入过程等相关知识点。 一、GPS 的开启 在 Android...

    android gps

    本篇文章将详细讲解如何在Android中使用GPS接口来获取地理位置信息。 首先,我们需要了解Android的位置API。在Android 6.0(API级别23)之前,主要使用`LocationManager`类来获取GPS数据。从Android 6.0开始,引入...

    TI GPS在android4.2中的架构

    标题与描述均聚焦于“TI GPS在Android 4.2中的架构”,这表明文档将深入探讨Texas Instruments(TI)GPS技术在特定版本的Android操作系统——即Android 4.2(代号为Jelly Bean)——中的实现细节。下面,我们将根据...

Global site tag (gtag.js) - Google Analytics