|
MapManager.java : 위치 찾기
DialogManager.java : 다이얼로그 관리
MainActivity에 MapManager 인스턴스 생성.
MapManager.java
import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapController; public class MapManager { private DialogManager mDialogManager; private MapController mMapController; private LocationManager mLocationManager; private String mProvider; // 공급자 public MapManager(Context context) { mDialogManager = new DialogManager(context); mMapController = MyGps.mMapController; mLocationManager = (LocationManager)context.getSystemService(context.LOCATION_SERVICE); // mProvider = mLocationManager.GPS_PROVIDER; // GPS mProvider = mLocationManager.NETWORK_PROVIDER; // NETWORK } /* 위치 찾기 */ public void SearchLocation() { mLocationManager.requestLocationUpdates(mProvider, 1000, 0, mListener); mDialogManager.Loading(); } LocationListener mListener = new LocationListener() { public void onLocationChanged(Location location) { GeoPoint point = new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6)); mMapController.animateTo(point); // 위치로 이동 mLocationManager.removeUpdates(mListener); // 해제 mDialogManager.LoadingEnd(); } public void onProviderDisabled(String provider) { // 추가 : 공급자 사용불가 처리 } public void onProviderEnabled(String provider) { } public void onStatusChanged(String provider, int status, Bundle extras) { } }; // mListener }- mProvider : 공급자 선택 ( GPS를 사용하면 더욱 정확한 위치 확인가능. )
- mLocationManager.requestLocationUpdates(mProvider, 1000, 0, mListener); (공급자, 1초, 0m, mListener); 시간과 거리는 AND가 아닌 OR. ex) 100초, 1000m 일경우, 1000m를 움직이지 않아도 100초 후에는 자동으로 갱신이 된다.
- MainActivity에서 만든 메뉴 1번에 SearchLocation();을 연결한다. 메뉴 선택 후 '위치찾기'시 위치를 찾는중이라는 다이얼로그를 띄워준다.
위치를 찾으면 다이얼로그와 위치찾기를 해제시킨다. ( 배터리 소모 방지 )
DialogManager.java
import android.app.ProgressDialog; import android.content.Context; public class DialogManager { private Context context; private ProgressDialog mProgressDialog; public DialogManager(Context context) { this.context = context; } /* loading 구현*/ public void Loading() { mProgressDialog = ProgressDialog.show(context, null, "위치 정보 받는중...", true, false); } /* loading 끝 */ public void LoadingEnd() { mProgressDialog.dismiss(); } }위치를 찾을때는 보여주고, 찾고 난 후 제거해 준다.
|
'Android > GPS' 카테고리의 다른 글
[MyGps_04] 주소 가져오기 (0) | 2011.04.18 |
---|---|
[MyGps_02] 구글맵 메뉴 옵션 넣기 (0) | 2011.01.26 |
[MyGps_01] 구글맵 릴리즈용 API KEY 얻기. 구글맵 띄우기 (9) | 2011.01.25 |