Maison  >  Article  >  Java  >  Exemples d'utilisation du positionnement GPS sous Android

Exemples d'utilisation du positionnement GPS sous Android

高洛峰
高洛峰original
2017-01-07 15:03:071657parcourir

Le positionnement GPS est une fonction dont disposent actuellement de nombreux téléphones portables, et elle est très pratique. Cet article décrit l'utilisation du positionnement GPS dans Android avec des exemples. Partagez-le avec tout le monde pour votre référence. La méthode spécifique est la suivante :

Généralement, pour obtenir la position actuelle via GPS sous Android, vous devez d'abord obtenir une instance LocationManager et obtenir le premier emplacement via la méthode getLastKnownLocation() de l'instance. de cette méthode est la suivante :

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

Le fournisseur est la méthode de positionnement, qui peut utiliser le positionnement GPS (LocationManager.GPS_PROVIDER) ou le positionnement réseau (LocationManager.NETWORK_PROVIDER). Cet article concerne donc le positionnement GPS. LocationManager.GPS_PROVIDER est utilisé. minTime est l'intervalle entre les mises à jour de localisation. Listener est un écouteur pour les changements d'emplacement. Définissez vous-même un LocationListener(), remplacez onLocationChanged() et ajoutez des actions lorsque l'emplacement change.

Le fichier de mise en page est le suivant :

<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>

Le fichier MainActivity.java est le suivant :

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);
  }
}

Ajouter des autorisations au fichier AndroidManifest.xml :

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

Allumez le satellite GPS avant l'opération. Le résultat de l'opération est tel qu'indiqué dans la figure ci-dessous :

Exemples dutilisation du positionnement GPS sous Android

Les lecteurs peuvent travailler à l'extérieur si le signal est suffisant. Si vous l'essayez quelque part, vous pouvez obtenir la localisation GPS.

J'espère que cet article sera utile à la conception de la programmation Android de chacun.

Pour plus d'articles sur des exemples d'utilisation du positionnement GPS dans Android, veuillez faire attention au site Web PHP chinois !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn