이 문서의 예에서는 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를 엽니다. 인터페이스에서 왼쪽의 장치 열은 가상 머신의 잠금이 해제된 후 가상 머신의 다양한 서비스 시작 상태를 동적으로 표시합니다. 독립형 머신의 장치 열 아래에 에뮬레이터 라인이 있습니다. 이때 아래 에뮬레이터 컨트롤 아래에 위치 컨트롤이 있는 것을 볼 수 있습니다. 내부의 수동 탭을 열면, 하하 위도를 보셨을 것입니다. 경도를 변경할 수 있습니다. 프로그램을 실행한 다음 방금 설정한 위도와 경도로 보내기 버튼을 클릭하여 새 지리적 위치 수신을 시뮬레이션합니다.
이번 데모에서는 로그를 사용하여 상태를 표시했습니다. 더 알고 싶은 친구는 이 방법을 사용하는 것이 좋습니다. Log를 능숙하게 사용하는 방법을 알아보려면 sundyzlh의 교육 동영상을 검색해 보시기 바랍니다.
LOG 활용에 대해서는 이전 글 "로그 기반 Activity Lifecycle Instance를 시연하기 위한 안드로이드 프로그래밍의 상세 설명"을 참고하시기 바랍니다.
최종 효과는 아래와 같습니다.
이 글이 안드로이드 프로그래밍에 종사하는 모든 분들께 도움이 되기를 바랍니다.
Android가 GPS를 사용하여 사용자의 지리적 위치를 파악하고 위치 변경을 모니터링하는 방법에 대한 자세한 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!