获取定位信息

获取了LocationManager对象之后,接下来就可通过指定LocationProvider获取定位信息。

下面程序示范了如何通过手机实时地获取定位信息,包括用户所在的经度、纬度、高度、方向、移动速度等。

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.EditText;

public class LocationTest extends Activity {
  //定义LocationManager对象
  LocationManager locManager;
  //定义程序界面中的Edittext组件
  EditText show;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_location_test);
    //获取程序界面上的Edittext组件
    show = (EditText) findViewById(R.id.show);
    //创建LocationManager对象
    locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    //从GPS获取最近的定位信息
    Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    //使用Location根据Edittext的显示
    updateView(location);
    //设置每3秒获取一次GPS的定位信息
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
              3000, 8, new LocationListener() {

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

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

      @Override
      public void onProviderDisabled(String provider) {
        updateView(null);
      }

      @Override
      public void onLocationChanged(Location location) {
        // 当GPS定位信息发生改变时,更新位置
        updateView(location);
      }
    });
  }
  //更新Edittext中显示的内容
  public void updateView(Location newLocation){
    if(newLocation != null){
      StringBuilder sb = new StringBuilder();
      sb.append("实时的位置信息:\n");
      sb.append("经度:");
      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());
      show.setText(sb.toString());
    }else{
      //如果传入的Location对象为空则清空Edittext
      show.setText("");
    }
  }
}

上面的程序中粗体字代码用于从Location中获取定位信息,包括用户的经度、纬度、高度、方向和移动速度等信息。程序代码中还通过LocationManager设置了一个监听器,该监听器负责每个3秒向LocationProvider请求一次定位信息,当LocationProvider可用时、不可用时或提供的定位信息发生改变时,系统会回调updateView(Location   newLocation)来更新Edittext中显示的定位信息。

该程序需要有访问GPS信号的权限,因此需要在AndroidManifest.xml文件中增加如下授权代码片段:

<!-- 授权获取定位信息 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

如果把该程序与Google  Map结合,让该程序根据GPS提供的信息实时地显示用户在地图上的位置,即可开发出GPS导航系统。

时间: 2024-09-30 10:19:16

获取定位信息的相关文章

android使用百度地图SDK获取定位信息

本文使用Android Studio开发. 获取定位信息相对简单,我们只需要如下几步: 第一步,注册百度账号,在百度地图开放平台新建应用.生成API_KEY.这些就不细说了,请前往这里:http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/key 第二步,下载sdk,地址:http://lbsyun.baidu.com/index.php?title=android-locsdk/geosdk-android-download

微信小程序开发如何获取定位信息

当我们在使用微信小程序时,会弹出一个获取你的定位信息.那么这个功能是怎样实现的,下面木鱼小铺(https://www.muyu007.cn)就和大家科普一下微信小程序开发如何获取定位信息? 我们一般通过调用wx.getLocation()获取当前的地理位置,为了能够获得准确的定位信息,我们还需要借助第三方地图服务API来实现.比如腾讯地图或百度地图. 下面我们就以借助腾讯地图为例,看看如何获取定位信息. 第一步:你需要去腾讯地图平台上注册一个账号,在管理后台中创建密钥. 第二步:登录进入有一个界

跳转链接前通过浏览器获取定位信息

<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=5dacabfc3bd5924cdb6373195dcf68a0"></script> <script type="text/javascript"> var map, geolocation; var lng, lat; //加载地图,调用浏览器定位服务

Xamarin.Android 使用百度地图获取定位信息

最近做一个项目,web端使用百度地图,PDA使用手持机自带的GPS定位系统获取经纬度,然后再百度地图上显示该经纬度会有一定距离的差异,这里就像可乐的瓶子拧上雪碧的盖子,能拧的上却不美观.所以为了数据的精确性,PDA端也用百度地图的接口. 下面主要流程分为以下几步: 新建项目BaiduMapAPIDemo. 下载百度地图 --Android定位SDK . Binging Labrary项目添加相关文件. 注册百度开发平台,创建应用,获取AK. 写入百度提供示例代码. 查看输出结果. 第一步:新建项

获取地理位置信息

在HTML5中,为window.navigator对象新增了一个geolocation属性,可以使用Geolocation API来对该属性进行访问.window.navigator对象的geolocation属性存在以下三个方法. void getCurrentPosition(onSuccess,onError,options); 该方法用来获取用户当前的地理位置信息. navigator.geolocation.getCurrentPosition ( function(position)

逆向地理编码--根据地址搜索定位,点击地图、获取经纬度信息

1.地图使用的是高德.效果如下图: 2.前端代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>    <met

php定位并且获取天气信息

1 header("Content-type: text/html; charset=utf-8"); 2 class getWeather{ 3 private $ak; 4 5 public function __construct($ak){ 6 if($ak){ 7 $this->ak=$ak; 8 } else { 9 die('参数错误');exit; 10 } 11 12 } 13 14 /** 15 * 获取城市名称 16 * @param string $ip

安卓获取软硬件信息并上传给server(Socket实现)

首先,项目结构如图--A:分为client部分CheckInfo和server端CheckInfo_Server.CheckInfo获取手机信息(Mac,Cpu,内存,已安装软件信息等)并上传到server端,然后从已安装软件信息中查找有没有安装某一款软件,没有则定位到该软件下载页面.CheckInfo_Server将上传的信息输出. 图--A AndroidManifest.xml: <? xml version="1.0" encoding="utf-8"

android利用GPS和高德地图获取定位案例

一.main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" an