Android使用GPS获取用户地理位置并监听位置变化的方法

本文实例讲述了Android使用GPS获取用户地理位置并监听位置变化的方法。分享给大家供大家参考,具体如下:

LocationActivity.java

/* LocationActivity.java
 * @author octobershiner
 * 2011 7 22
 * SE.HIT
 * 一个演示定位用户的位置并且监听位置变化的代码
 * */
package uni.location;
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.os.Vibrator;
import android.util.Log;
import android.widget.TextView;
public class LocationActivity extends Activity {
 /** Called when the activity is first created. */
 //创建lcoationManager对象
 private LocationManager manager;
 private static final String TAG = "LOCATION DEMO";
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  //获取系统的服务,
  manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  Location location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
  //第一次获得设备的位置
  updateLocation(location);
  //重要函数,监听数据测试
  manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 10,
   locationListener);
 }
 /*此处更新一下,当activity不处于活动状态时取消GPS的监听*/
  public void onPause(){
  super.onPause();
  locationManager.removeListener(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) {
   String latLng;
   if (location != null) {
   double lat = location.getLatitude();
   double lng = location.getLongitude();
   latLng = "Latitude:" + lat + " Longitude:" + lng;
   } else {
   latLng = "Can't access your location";
   }
   Log.i(TAG, "The location has changed..");
   Log.i(TAG, "Your Location:" +latLng);
 }
}

只修改activity文件是不够的,因为android系统的安全性,对服务采用授权的机制,所以需要修改manifest.xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="uni.location"
  android:versionCode="1"
  android:versionName="1.0">
 <uses-sdk android:minSdkVersion="8" />
 <application android:icon="@drawable/icon" android:label="@string/app_name">
  <activity android:name=".LocationActivity"
     android:label="@string/app_name">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
 </application>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

很多朋友可能会有疑问,那就是GPS定位在android虚拟机上的调试问题,其实是可以模拟的,大家启动虚拟机,然后打开DDMS的界面,左侧device栏目会动态显示虚拟机上各项服务启动的情况,待出虚拟机现解锁界面后,单机device栏目下面的emulator行,这时会发现下面的emulator control下面会有 location control ,打开里面的manual标签,哈哈相信你已经看到了经纬度,你可以更改。运行你的程序,然后单击刚才经纬度设置的send按钮就可以模拟接受到新的地理位置了。

在这个demo中 我用到了Log显示状态,推荐使用这种方法,很好用,想了解的朋友可以参考一下我的另一篇文章,学会巧妙的使用Log,跟推荐大家搜一下sundyzlh的教学视频。
 
关于LOG的使用可参考上一篇《Android编程之基于Log演示一个activity生命周期实例详解》

最终效果如下图所示:

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Android app应用多语言切换功能实现

    本文实例为大家分享了Android app应用实现多语言切换功能,供大家参考,具体内容如下 1.添加多语言文件 在不同的 value 文件夹下(例如 value .value-en.values-zh-rTW 文件夹)添加不同语言的 string.xml 文件,我们的项目添加了英文.简体中文.繁体中文三种语言,如下图所示: Project模式: Android模式: 其中英文需要翻译,繁体如果没有专门翻译的话,可以找个简繁转换网站,直接将简体中文转成繁体中文,推荐一个网站: http://www

  • Android编程获取地理位置的经度和纬度实例

    本文实例讲述了Android编程获取地理位置的经度和纬度.分享给大家供大家参考,具体如下: 在Android应用程序中,可以使用LocationManager来获取移动设备所在的地理位置信息.看如下实例:新建android应用程序TestLocation. 1.activity_main.xml布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_w

  • 用Android Location获取当前地理位置的方法

    在Android应用中,往往有获取当前地理位置的需求,比如微信获取附近的人需要获取用户当前的位置,不多说,直接上例子. 复制代码 代码如下: public Location getLocation() {// 获取Location通过LocationManger获取!  LocationManager locManger = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  Location loc = locMange

  • Android 各国语言缩写及简称详细介绍

    android资源文件夹的写法规则: 语言缩写-国家地区缩写 语言缩写请参阅: 国家地区缩写 en 英文 en_US 英文 (美国) ar 阿拉伯文 ar_AE 阿拉伯文 (阿拉伯联合酋长国) ar_BH 阿拉伯文 (巴林) ar_DZ 阿拉伯文 (阿尔及利亚) ar_EG 阿拉伯文 (埃及) ar_IQ 阿拉伯文 (伊拉克) ar_JO 阿拉伯文 (约旦) ar_KW 阿拉伯文 (科威特) ar_LB 阿拉伯文 (黎巴嫩) ar_LY 阿拉伯文 (利比亚) ar_MA 阿拉伯文 (摩洛哥) a

  • Android实现app应用多语言切换功能

    最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成,下次重新打开 App ,也是用户设置的语言. 2. 实现步骤  1). 添加多语言文件  在不同的 value 文件夹下(例如 value .value-en.values-zh-rTW 文件夹)添加不同语言的 string.xml 文件,我们的项目添加了英文.简体中文.繁体中文三种语言,如下图所示

  • 轻松实现Android仿淘宝地区选择功能

    最近用淘宝客户端的时候,编辑地址的时候有个地区选择的功能.看上面的效果觉得挺酷,滚动的时候,是最后一个从下面飞上来挨着前一个.就自己鼓捣一个出来玩玩. 说了效果可能不太直观,下面上两张图看看效果 淘宝地区选择效果 再来一张自己的效果 gif的效果可能不太好,大家自己用Android手机打开淘宝看看 实现分析 展示很简单,ListView就可以了.对于动画效果,只需要在getView的时候获取到要展示的View,通过属性动画修改translationY就ok啦.由于地区选择是一个界面,所以这里还用

  • android 支持的语言列表(汇总)

    Arabic, Egypt (ar_EG) -----------------------------阿拉伯语,埃及Arabic, Israel (ar_IL) -------------------------------阿拉伯语,以色列Bulgarian, Bulgaria (bg_BG) ---------------------保加利亚语,保加利亚Catalan, Spain (ca_ES) ---------------------------加泰隆语,西班牙Czech, Czech

  • Android实现系统语言切换功能

    简单介绍下这个需求的缘由,这段时间因公司业务需要,其中有一项"设置系统语言"功能,就是在使用APP的过程中,动态的去切换整个Android机器的语言,具体参照手机设置页面有语言切换功能.起初想来是很简单的事情嘛,不就是个简单的资源国际化嘛,strings.xml资源文件一整还不给OK?真正动起手来就真不是这么一回事了,国际化是没问题,但是怎样能更改所有页面的文字资源呢,这是一个问题.下面介绍下网上找的几个方案. 一.API欺骗 烧制到手机中的android.jar包含了Android所

  • Android 获取系统语言的实例(兼容7.0)

    前言 获取系统当前语言是一个比较常用的功能,在 Android 7.0 系统上旧函数获取到的当前系统语言并不正确,或者说从 Android 7.0 起,Android 系统语言的规则变了. 下面是未适配 Android 7.0 的代码: //获取 Locale 的方式有二 //方式一 Locale locale = getResources().getConfiguration().locale; //方式二 Locale locale = Locale.getDefault(); //获取当前

  • Android自定义WheelView地区选择三级联动

    本文实例为大家分享了WheelView地区选择三级联动的具体代码,供大家参考,具体内容如下 1. 效果 最近需要做一个地区选择的功能,但是在网上和github上找了很久都没找到满意的,然后朋友推荐了一个给我,我花了点时间把代码大致看懂并改成我想要的,并写上我的理解.效果如图: 2. 注意 a. 首先我们要明白,网上这写三级联动的demo,不管是把数据库文件放在raw还是assets中,我们都要进行复制,将这个文件复制到app目录下,即 /data/data/"+context.getPackag

  • 详解Android更改APP语言模式的实现过程

    一.效果图 二.描述 更改Android项目中的语言,这个作用于只用于此APP,不会作用于整个系统 三.解决方案 (一)布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" a

  • Android编程实现获取当前系统语言及地区并更改语言的方法

    本文实例讲述了Android编程实现获取当前系统语言及地区并更改语言的方法.分享给大家供大家参考,具体如下: 如果想获取手机的当前系统语言,可以通过Locale类获取,主要方法: Locale.getDefault().getLanguage() 返回的是es或者zh:通过 Locale.getDefault().getCountry() 获取当前国家或地区,返回为CN或US: 如果当前手机设置为中文-中国,则使用此方法返回zh-CN,同理可得到其他语言与地区的信息. 1.首先,如果要程序自动适

随机推荐