广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Android中GPS定位的用法实例

    2018-04-13 09:17:02 次阅读 稿源:互联网
    广告

    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 onCreateOptionsMenu(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程序设计有所帮助。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告