마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

위치관련 문의드립니다.

0 추천

안녕하세요.

현재위치를 가져와서 구글맵에 마커찍는 화면을 개발하고 있습니다.

onCreate 에서 아래 처럼 구현해놓고

if(mLocationManager == null)
  {
   mLocationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
   mGPSLocationListener = new GPSLocationListener();
   mNetWorkLocationListener = new NetWorkLocationListener();
   
   mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000, 0, mGPSLocationListener);
   mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000, 0, mNetWorkLocationListener);
  }

 

각각의 GPSLocationListener, NetWorkLocationListener 를 구현했습니다.

public class GPSLocationListener implements LocationListener
 {
  @Override
  public void onLocationChanged(Location location) {
   // TODO Auto-generated method stub
   if(location!=null)
   {
    mLastGPSLocationTime=System.currentTimeMillis();
    isGPSReceive=true;    
    
    mapDisplay(location);
      
    Toast.makeText(getBaseContext(), "GPS발생 : "+location.getLatitude()+" / "+location.getLongitude(), Toast.LENGTH_SHORT).show();
    Logging.d("GPS발생 : "+getSystemDateNTime()+location.getLatitude()+" / "+location.getLongitude());
   }

  }
  @Override
  public void onProviderDisabled(String provider) {
   // TODO Auto-generated method stub
   if(provider == LocationManager.GPS_PROVIDER)
   {
    isGPSReceive=false;
   }
  }
  @Override
  public void onProviderEnabled(String provider) {}
  @Override
  public void onStatusChanged(String provider, int status, Bundle extras) {}
 }
 //network리스너를 재정의한 class
 public class NetWorkLocationListener implements LocationListener
 {
  @Override
  public void onLocationChanged(Location location) {
   // TODO Auto-generated method stub
   if(location!=null)
   {
         mapDisplay(location);
     
     Toast.makeText(getBaseContext(), "GPS 20초이상 NPS발생 : "+location.getLatitude()+" / "+location.getLongitude(), Toast.LENGTH_SHORT).show();
     Logging.d("GPS 20초이상 NPS발생 : "+getSystemDateNTime()+location.getLatitude()+" / "+location.getLongitude());
      }
  }

  @Override
  public void onProviderDisabled(String provider) {}

  @Override
  public void onProviderEnabled(String provider) {}

  @Override
  public void onStatusChanged(String provider, int status, Bundle extras) {}
 }
private void mapDisplay(Location location){  
  
  double latitude = location.getLatitude(); 
  double longitude = location.getLongitude();
  
  Logging.d(":::::::: "+latitude+" / "+longitude+":::::::: ");
  
  MYLOC = new LatLng(latitude, longitude); 
  Map.animateCamera(CameraUpdateFactory.newLatLngZoom(MYLOC, 15));
  
 }

그럼 제가 궁금한건..

@Override
 public void onMyLocationChange(Location location) {
  Logging.d("onMyLocationChange : "+location.getLatitude()+" / "+location.getLongitude());


    //  여기에 각각의 GPS리스너와 Network리스너에서 구해진 location 이 들어오는게 맞는건가요????

   
 }

 

무조건 현재위치를 가져와서 GPS/네트워크 둘다 구하긴 했는데...

로그 찍어보니 onMyLocationChange 함수가 5초마다 호출되고 있더라구요,,,,

근데 GPS/Network 리스너는 20초마다 호출되고 있고....뭐가 먼지 모르겟네요 ㅠㅠ

조언좀 부탁드릴께요,,,

수고하세요~

익명사용자 님이 2014년 7월 10일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...