Android GPS定位

GPS定位貌似在室内用不了,今天自己弄了一个GPS定位小Demo,包括用户所在的经度、纬度、高度、方向、移动速度、精确度等信息。Android为GPS功能支持专门提供了一个LocationManager类,程序并不能直接创建LocationManager实例,而是通过Context的getSystemService()方法来获取。

例如:

//创建LocationManager对象
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

下面的程序很简单,布局里面只用了一个EditText显示所有数据:

实例Demo:

MainActivity.java

package sn.qdj.localgpsdemo;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.EditText;
/**
 * GPS定位
 * @author qingdujun
 *
 */
public class MainActivity extends Activity {

	LocationManager lm;
    EditText show;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        show = (EditText)findViewById(R.id.show);

        //创建LocationManager对象
        lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        //从GPS获取最近的定位信息
        Location lc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        //更新显示定位信息
        updateView(lc);

        //设置每3秒 获取一次GPS定位信息
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 8, new LocationListener() {

			@Override
			public void onStatusChanged(String provider, int status, Bundle extras) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onProviderEnabled(String provider) {
				// 当GPS LocationProvider可用时,更新定位
				updateView(lm.getLastKnownLocation(provider));
			}

			@Override
			public void onProviderDisabled(String provider) {
				// TODO Auto-generated method stub
				updateView(null);
			}

			@Override
			public void onLocationChanged(Location location) {
				// 当GPS定位信息发生改变时,更新定位
				updateView(location);
			}
		});

    }

    public void updateView(Location newLocation){
    	if (newLocation != null) {
			StringBuilder sb = new StringBuilder();
			sb.append("实时位置信息:\n");
			sb.append("经度:\n");
			sb.append(newLocation.getLongitude());
			sb.append("\n纬度:");
			sb.append(newLocation.getLatitude());
			sb.append("\n高度:");
			sb.append(newLocation.getAltitude());
			sb.append("\n速度:");
			sb.append(newLocation.getSpeed());
			sb.append("\n方向:");
			sb.append(newLocation.getBearing());
			sb.append("\n定位精度:");
			sb.append(newLocation.getAccuracy());

			show.setText(sb.toString());
		} else {
			show.setText(null);
		}
    }
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="sn.qdj.localgpsdemo.MainActivity" >

    <!-- 显示定位信息 -->
    <EditText
        android:id="@+id/show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="" />

</RelativeLayout>

GPS定位需要添加一个权限

<!-- GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

参考文章:《疯狂Android讲义(第2版)》 李刚 编著

时间: 2024-11-22 17:02:55

Android GPS定位的相关文章

Android GPS定位实现,教你如何一分钟实现GPS定位

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/50425041 今天给大家带来的是一篇关于GPS定位的文章,我们都知道,Android定位大致分为wifi定位,基站定位和GPS定位,今天我就带大家来看看GPS定位是什么玩意,通过本篇的学习,相信大家能很快上手GPS定位操作了.GPS定位是通过和GPS定位卫星通讯来进行定位的,可以使用最少数量的卫星实现全球定位,3颗,通过光波进行通讯,不需要联网,但是连接时间比较长,大致1分钟左右

Android GPS定位,取得城市名称

首先说明,定位城市是基于地图服务API的. GPS定位城市需要做两个步骤: 1.取得用户当前位置的经度,纬度. 2.根据经纬度转换成城市名称. 经纬度转换成城市名称,只能使用地图服务了.自己做不来. 地图服务API有两个,一个是百度地图,一个是谷歌地图.百度地图API调用需要注册百度帐号,并申请APP_KEY,谷歌地图API直接调用即可. 百度地图API调用地址:http://api.map.baidu.com/geocoder?output=json&location=纬度,经度&key

彻底解决Android GPS没法定位这一顽固问题

大家去网上搜索Android定位location为null没法定位问题,估计有一大堆文章介绍如何来解决,但是最后大家发现基本没用.本文将从Android定位实现原理来深入分析没法定位原因并提出真正的解决方案.在分析之前,我们肯定得先看看android官方提供的定位SDK. 默认Android GPS定位实例 获取LocationManager: mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVI

android 获取GPS定位

AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.yanlei.yl5" > <uses-permission android:name="a

Arcgis API for Android之GPS定位

欢迎大家增加Arcgis API for Android的QQ交流群:337469080 先说说写这篇文章的原因吧,在群内讨论的过程中,有人提到了定位的问题,刚好,自己曾经在做相关工作的时候做过相关的东西,所以就总结一下,给大家共享出来,因为本人水平有限,bug是在所难免,还望有更高的高人批评指正.废话不多说,直接进入主题. 要想在地图上定位并将定位结果实时显示出来,启发逻辑上非常easy:首先,接收并解析GPS或者网络的位置信息,一般来说,接受的位置信息是WGS84的经纬度的,可是我们的地图的

delphi xe6 for android 自带控件LocationSensor优先使用GPS定位的方法

delphi xe6 for android LocationSensor控件默认是优先使用网络定位,对定位精度要求高的应用我们可以修改原码直接指定GPS定位. 修改方法: 将C:\Program Files\Embarcadero\Studio\14.0\source\rtl\common\System.Android.Sensors.pas拷贝到自己的工程目录里 打开System.Android.Sensors.pas找到function TUIAndroidLocationSensor.D

3,gps定位原理及格式

1 gps定位原理 gps是美国开发的一套实时定位系统.在导航应用中,重点关注的是用户的gps接受机,根据接收机的数据从而获取当前的位置和时间信息.大概了解下定位原理: 由于我们是用于上位机的开发,接收器遵守的是NMEA0183协议,某种程度上我们通过协议直接得到当前所在的经纬度信息. 首先我们必须要了解的是地球的参考坐标系,以便于我们使用地图时把得到的坐标转换成导航所使用的坐标系.NMEA0183使用的参考坐标系是WGS-84坐标系. 其次,必须了解三颗卫星可以定位,另外一颗卫星是为了消除误差

Android 百度定位获得当前具体位置

百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口. 可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,可以轻松访问百度地图服务和数据,构建功能丰富.交互性强的地图类应用程序. Android项目截图注意libs的文件名都是固定的,否则会报错. 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm

Android - 位置定位(Location)服务(Service)类的基本操作

位置定位(Location)服务(Service)类的基本操作 本文地址: http://blog.csdn.net/caroline_wendy 定位服务,可以确定移动设备的地址,在地图相关服务中,经常会使用GPS和移动相关的定位服务,GPS较为精准. 根据常用的定位服务功能,又添加网络检测和Wifi检测,和启动相关界面进行测试的功能. 代码: import android.content.Context; import android.content.Intent; import andro