추가 파일
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();
    }
}
위치를 찾을때는 보여주고, 찾고 난 후 제거해 준다.



+ Recent posts