`
kryptonum
  • 浏览: 98226 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[原创]Android中LocationManager的简单使用,获取当前位置

阅读更多
Android中LocationManager的提供了一系列方法来地理位置相关的问题,包括查询上一个已知位置;注册/注销来自某个 LocationProvider的周期性的位置更新;以及注册/注销接近某个坐标时对一个已定义Intent的触发等。今天我们就来看看Android 中LocatinManager的简单使用,以获取当前所在的位置为例。

首先,我们需要获取LocationManager的一个实例,这里需要注意的是他的实例只能通过下面这种方式来获取,直接实例化LocationManager是不被允许的。

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);


得到了LocationManager的实例locatonManager以后,我们通过下面的语句来注册一个周期性的位置更新。
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
 1000, 0, locationListener);


这句代码告诉系统,我们需要从GPS获取位置信息,并且是每隔1000ms更新一次,并且不考虑位置的变化。最后一个参数是LocationListener的一个引用,我们必须要实现这个类。

private final LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) { //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
        // log it when the location changes
        if (location != null) {
            Log.i("SuperMap", "Location changed : Lat: "
              + location.getLatitude() + " Lng: "
              + location.getLongitude());
        }
    }

    public void onProviderDisabled(String provider) {
    // Provider被disable时触发此函数,比如GPS被关闭
    }

    public void onProviderEnabled(String provider) {
    //  Provider被enable时触发此函数,比如GPS被打开
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
    // Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
    }
};


以上的这些步骤一般应当在Activity的onCreate()阶段完成。

在成功注册了一个周期性坐标更新以后,我们就随时可以通过下面的方法来取得当前的坐标了。
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double latitude = location.getLatitude();     //经度
double longitude = location.getLongitude(); //纬度
double altitude =  location.getAltitude();     //海拔


不过这时候,如果你尝试去运行这个LocationSample的话程序启动时多半就会报错,因为我们没有设置GPS相关的权限,解决方法也相当简单,在AndroidManifest.xml中的block里添加下面这句即可解决权限的问题。详细的权限设置,请参考官方文档docs/reference/android/Manifest.permission.html
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


如果是在模拟器中调试的话,我们有两种方法来设置一个模拟的坐标值,第一种是通过DDMS,我们可以在eclipse的ADT插件中使用这种方法,只要打开"Window" --&gt; "Show View" 中打开"Emulator Control" View即可看到如下的设置窗口,我们可以手动,或者通过KML和GPX文件来设置一个坐标。

另一种方法是使用geo命令,我们需要telnet到本机的5554端口,然后在命令行下输入类似于 geo fix -121.45356 46.51119 4392 这样的命令,后面三个参数分别代表了经度、纬度和(可选的)海拔。


William Hua 原创, 欢迎光临William Hua的blog
分享到:
评论
1 楼 ihopethatwell 2011-12-12  
随便填写经度和纬度,然后点击send没反应,是不是要设置什么?

相关推荐

    Android LocationManager 获取经纬度和卫星信息

    在Android开发中,LocationManager是系统提供的一种用于获取设备地理位置信息的重要API。它允许开发者访问GPS(全球定位系统)、网络定位服务以及其他可用的位置提供者,从而获取到经纬度坐标和其他位置相关数据。...

    Android 获取当前位置,地区名称完整实

    在Android开发中,获取设备的当前位置以及地区名称是常见的需求,比如用于导航、天气查询或者个性化服务等。本文将深入探讨如何在Android应用中实现这一功能,主要涉及以下几个知识点: 1. **Android权限管理**: ...

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

    下面是一个简单的示例,展示如何在Android应用中使用GPS获取位置信息: ```java @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout....

    Android开发使用LocationManager实现定位服务

    gps定位,实测可用. 第一个是网络定位,第二个是GPS定位,第三个是直接取缓存。LocationManager本身提供了选择最好的provider的方法: // 获取最好的定位方式 ... // true 代表从打开的设备中查找

    LocationManager获取GPS信息

    在Android系统中,LocationManager是用于获取地理位置信息的关键服务,它允许应用从各种位置提供者(如GPS或网络)获取位置更新。这个服务是Android框架的一部分,为开发者提供了丰富的功能来实现定位相关的应用需求...

    Android:LocationManager定位demo

    这是一个利用LocationManager定位的实例demo,可获取经纬度,国家名称,城市名称,街道等信息。详细介绍请移步:http://blog.csdn.net/xiong_it/article/details/46968477

    android 使用LocationManager 用户定位

    这是一个用户定位的示例 Main 类用于演示获取Location Provider Main2 类用于演示获取最佳的Location Provider,两个类要修改Manifest.xml 文件才能分别运行

    android根据GPS获取经纬度和海拔

    在Android开发中,获取设备的地理位置信息是常见的需求,其中包括经纬度、海拔、速度和时间等数据。这些信息主要依赖于全球定位系统(GPS)来获取。本文将深入探讨如何在Android应用中实现这一功能。 首先,我们...

    Android下获取当前位置代码

    在Android平台上,获取设备的当前位置是一项常见的任务,这对于开发各种基于位置的应用程序至关重要。这篇描述提到了一个Android Demo,它展示了如何通过GPS和网络定位服务来获取设备的位置信息。下面我们将详细探讨...

    Android高级应用源码-android获取当前经纬度.zip

    在Android开发中,获取设备的当前经纬度是常见的需求,比如用于定位服务、地图应用或者提供个性化推荐。这个"Android高级应用源码-android获取当前经纬度.zip"的压缩包很可能包含了一个示例项目,用于演示如何在...

    android gps 获取经纬度

    总结起来,Android中获取GPS经纬度涉及到的关键知识点有: 1. AndroidManifest.xml中的权限声明 2. 请求和检查运行时权限 3. 使用LocationManager和服务提供者 4. 获取最近的位置或实时位置更新 5. 处理位置信息的回...

    Android实现注册登录后 点击获取当前地理位置及经纬度坐标

    1. **Android权限管理**:在Android中,获取用户位置需要申请相应的权限,如`ACCESS_FINE_LOCATION`和`ACCESS_COARSE_LOCATION`。从Android 6.0(API级别23)开始,还需要在运行时请求权限。 2. **Location ...

    android studio获取当前经纬度的简单实例

    在Android开发中,获取设备的当前经纬度是常见的需求,特别是在构建地理位置相关的应用时。本实例将教你如何在Android Studio中实现这一功能,利用GPS(全球定位系统)和LBS(Location-Based Services,基于位置的...

    android简单实现输入经纬度获取地理位置demo

    在Android中,我们可以利用`Location`类来处理地理位置信息。这个类包含经纬度、海拔、速度、方向等属性,以及获取这些信息的方法。当我们有了用户输入的经纬度,可以通过模拟定位的方式,将这些值设置到`Location`...

    android获取当前经纬度

    以下将详细介绍如何在Android中获取经纬度以及相关知识点。 1. **定位服务基础** Android系统提供了`LocationManager`服务,它是获取地理位置信息的主要接口。首先,你需要在AndroidManifest.xml文件中添加必要的...

    Android 利用GPS获取当前位置

    在Android系统中,获取当前位置是移动应用开发中的常见需求,主要通过集成GPS(全球定位系统)服务来实现。本文将详细讲解如何利用Android的GPS功能获取经度、纬度和海拔等位置信息。 首先,我们需要在...

    LocationManager 自用中文资料

    `LocationManager`是Android系统中的一个关键类,用于获取设备的地理位置信息。它提供了一种方式来访问系统定位服务,让应用能够定期更新位置信息,或者在设备接近特定地理位置时触发预设的意图(Intent)。以下是对...

    Android LocationManager获取经度与纬度等地理信息

    在Android开发中,LocationManager是系统提供的一种服务,用于获取设备的地理位置信息,如经度、纬度等。本文将详细介绍如何使用LocationManager来获取这些关键数据。 首先,要使用LocationManager,你需要在...

    Android Studio 实训操作题(五)LocationManager基本用法.docx

    Android Studio 实训操作题(五)实验7LocationManager基本用法.docx

    android获取手机位置

    在Android中,我们使用`LocationManager`类来管理位置服务,并通过`Criteria`对象来定义我们的定位需求。以下是一个简单的示例代码,展示如何根据条件自动选择最优的定位方式: ```java import android.app....

Global site tag (gtag.js) - Google Analytics