>  기사  >  Java  >  Android가 GPS를 사용하여 사용자의 지리적 위치를 파악하고 위치 변경을 모니터링하는 방법

Android가 GPS를 사용하여 사용자의 지리적 위치를 파악하고 위치 변경을 모니터링하는 방법

高洛峰
高洛峰원래의
2017-01-07 15:13:291404검색

이 문서의 예에서는 Android가 GPS를 사용하여 사용자의 지리적 위치를 파악하고 위치 변경을 모니터링하는 방법을 설명합니다. 참고하실 수 있도록 자세한 내용은 다음과 같습니다.

LocationActivity.java

/* LocationActivity.java
 * @author octobershiner
 * 2011 7 22
 * SE.HIT
 * 一个演示定位用户的位置并且监听位置变化的代码
 * */
package uni.location;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.widget.TextView;
public class LocationActivity extends Activity {
 /** Called when the activity is first created. */
 //创建lcoationManager对象
 private LocationManager manager;
 private static final String TAG = "LOCATION DEMO";
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  //获取系统的服务,
  manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  Location location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
  //第一次获得设备的位置
  updateLocation(location);
  //重要函数,监听数据测试
  manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 10,
   locationListener);
 }
 /*此处更新一下,当activity不处于活动状态时取消GPS的监听*/
  public void onPause(){
  super.onPause();
  locationManager.removeListener(locationListener);
 }
 //创建一个事件监听器
 private final LocationListener locationListener = new LocationListener() {
   public void onLocationChanged(Location location) {
   updateLocation(location);
   }
   public void onProviderDisabled(String provider){
    updateLocation(null);
    Log.i(TAG, "Provider now is disabled..");
   }
   public void onProviderEnabled(String provider){
    Log.i(TAG, "Provider now is enabled..");
   }
   public void onStatusChanged(String provider, int status,Bundle extras){ }
 };
//获取用户位置的函数,利用Log显示
 private void updateLocation(Location location) {
   String latLng;
   if (location != null) {
   double lat = location.getLatitude();
   double lng = location.getLongitude();
   latLng = "Latitude:" + lat + " Longitude:" + lng;
   } else {
   latLng = "Can't access your location";
   }
   Log.i(TAG, "The location has changed..");
   Log.i(TAG, "Your Location:" +latLng);
 }
}

안드로이드 시스템의 보안상 액티비티 파일을 수정하는 것만으로는 충분하지 않습니다. 서비스에는 인증 메커니즘이 사용됩니다. 따라서 매니페스트.xml 파일을 수정해야 합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="uni.location"
  android:versionCode="1"
  android:versionName="1.0">
 <uses-sdk android:minSdkVersion="8" />
 <application android:icon="@drawable/icon" android:label="@string/app_name"> 
  <activity android:name=".LocationActivity"
     android:label="@string/app_name">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
 </application>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

많은 친구들이 안드로이드 가상 머신의 GPS 위치 디버깅 문제에 대해 질문할 수 있습니다. 실제로 시뮬레이션할 수 있습니다. 가상 머신을 시작한 다음 DDMS를 엽니다. 인터페이스에서 왼쪽의 장치 열은 가상 머신의 잠금이 해제된 후 가상 머신의 다양한 서비스 시작 상태를 동적으로 표시합니다. 독립형 머신의 장치 열 아래에 에뮬레이터 라인이 있습니다. 이때 아래 에뮬레이터 컨트롤 아래에 위치 컨트롤이 있는 것을 볼 수 있습니다. 내부의 수동 탭을 열면, 하하 위도를 보셨을 것입니다. 경도를 변경할 수 있습니다. 프로그램을 실행한 다음 방금 설정한 위도와 경도로 보내기 버튼을 클릭하여 새 지리적 위치 수신을 시뮬레이션합니다.

Android가 GPS를 사용하여 사용자의 지리적 위치를 파악하고 위치 변경을 모니터링하는 방법

이번 데모에서는 로그를 사용하여 상태를 표시했습니다. 더 알고 싶은 친구는 이 방법을 사용하는 것이 좋습니다. Log를 능숙하게 사용하는 방법을 알아보려면 sundyzlh의 교육 동영상을 검색해 보시기 바랍니다.

LOG 활용에 대해서는 이전 글 "로그 기반 Activity Lifecycle Instance를 시연하기 위한 안드로이드 프로그래밍의 상세 설명"을 참고하시기 바랍니다.

최종 효과는 아래와 같습니다.

Android가 GPS를 사용하여 사용자의 지리적 위치를 파악하고 위치 변경을 모니터링하는 방법

이 글이 안드로이드 프로그래밍에 종사하는 모든 분들께 도움이 되기를 바랍니다.

Android가 GPS를 사용하여 사용자의 지리적 위치를 파악하고 위치 변경을 모니터링하는 방법에 대한 자세한 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!


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