• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Android中GPS定位的用法实例

java 搞代码 4年前 (2022-01-09) 16次浏览 已收录 0个评论

GPS定位是目前很多手机都有的功能,且非常实用。本文以实例形式讲述了Android中GPS定位的用法。分享给大家供大家参考之用。具体方法如下:

一般在Android中通过GPS获得当前位置,首先要获得一个LocationManager实例,通过该实例的getLastKnownLocation()方法获得第一个的位置,该方法的说明如下:

void android.location.LocationManager.requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)

provider即定位方式,可以采用GPS定位(LocationManager.GPS_PROVIDER)或者网络定位(LocationManager.NETWORK_PROVIDER),本文是GPS定位,因此使用LocationManager.GPS_PROVIDER。minTime是位置更新的间隔时间。listener是位置改变的监听器,自己定义一个LocationListener(),重写onLocationChanged(),加入位置改变时的动作。

布局文件如下:

<LinearLayout 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"  android:orientation="vertical"  android:paddingBottom="@dimen/activity_vertical_margin"  android:paddingLeft="@dimen/activity_horizontal_margin"  android:paddingRight="@dimen/activity_horizontal_margin"  android:paddingTop="@dimen/activity_vertical_margin"  tools:context=".MainActivity" >    <TextView    android:id="@+id/txt_time"    style="@style/my_text"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="时间:" />    <TextView    android:id="@+id/txt_lat"    style="@style/my_text"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="经度:" />    <TextView    android:id="@+id/txt_lng"    style="@style/my_text"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="纬度:" />  </LinearLayout>

MainActivity.java文件如下:

package com.hzhi.my_gps;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.content.Context;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity {      TextView txt_time;  TextView txt_lat;  TextView txt_lng;  LocationManager lom;  Location loc;  Double lat;  Double lng;  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  Date now;  String str_date;  Timer timer;    @Override  protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);          get_con();    get_gps();          timer = new Timer(true);    timer.schedule(task, 0, 1000);  }    @Override  public boolean onCreateOptionsMe<mark>来源gaodaimacom搞#^代%!码网</mark>nu(Menu menu) {    // Inflate the menu; this adds items to the action bar if it is present.    getMenuInflater().inflate(R.menu.main, menu);    return true;  }      public void get_gps(){          lom = (LocationManager) getSystemService(Context.LOCATION_SERVICE);    loc = lom.getLastKnownLocation(LocationManager.GPS_PROVIDER);          if (loc != null) {      lat = loc.getLatitude();      lng = loc.getLongitude();      txt_lat.setText("纬度:" + String.valueOf(lat));      txt_lng.setText("经度:" + String.valueOf(lng));    }    else{      txt_lat.setText("纬度:未知" );      txt_lng.setText("经度:未知" );    }          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 = lom.getBestProvider(criteria, true);          lom.requestLocationUpdates(provider, 1000, 10, los);  }      LocationListener los = new LocationListener(){    public void onLocationChanged(Location location){      if (location != null) {        lat = location.getLatitude();        lng = location.getLongitude();        txt_lat.setText("纬度:" + String.valueOf(lat));        txt_lng.setText("经度:" + String.valueOf(lng));      }      else{        txt_lat.setText("纬度:未知" );        txt_lng.setText("经度:未知" );      }    };          public void onProviderDisabled(String provider){          };          public void onProviderEnabled(String provider){ };          public void onStatusChanged(String provider, int status,    Bundle extras){ };  };      // 获取控件  public void get_con(){          txt_time = (TextView) findViewById(R.id.txt_time);    txt_lat = (TextView) findViewById(R.id.txt_lat);    txt_lng = (TextView) findViewById(R.id.txt_lng);  }      Handler handler = new Handler(){          public void handleMessage(Message msg){      switch (msg.what){      case 1:        get_time();        break;      }    }  };      TimerTask task = new TimerTask(){      public void run() {        Message message = new Message();          message.what = 1;          handler.sendMessage(message);      }   };      // 获取时间  public void get_time(){          now = new Date(System.currentTimeMillis());    str_date = formatter.format(now);    txt_time.setText("时间:" + str_date);  }}

在AndroidManifest.xml文件中加入权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

运行前先打开GPS卫星,运行结果如下图所示:

读者可以在室外信号充足的地方试试,是可以获取GPS位置的。

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

更多Android中GPS定位的用法实例相关文章请关注搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Android中GPS定位的用法实例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址