>  기사  >  Java  >  Android의 GPS 위치 확인 사용 예

Android의 GPS 위치 확인 사용 예

高洛峰
高洛峰원래의
2017-01-07 15:03:071650검색

GPS 포지셔닝은 현재 많은 휴대폰에 탑재된 기능으로, 매우 실용적입니다. 이 문서에서는 예를 들어 Android에서 GPS 위치 확인을 사용하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 방법은 다음과 같습니다.

일반적으로 안드로이드에서 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 위성을 켜세요. 실행 결과는 아래 그림과 같습니다.

Android의 GPS 위치 확인 사용 예

신호가 충분하면 독자들이 야외에서 작업할 수 있습니다. 어딘가에서 시도하면 GPS 위치를 얻을 수 있습니다.

이 글이 모든 분들의 안드로이드 프로그래밍 설계에 도움이 되기를 바랍니다.

Android에서 GPS 위치 확인 사용 사례에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.