2010-07-26 2 views
5

Android에서 LocationListener로 조금 고생하고 있습니다. 나는 현재의 GPS 위치를 얻을 수있는 앱을 만들고 싶다. 그리고 나서 오랜 시간 동안 잠을 자고 싶다. 하루 이상. 이 기간 동안 나는 GPS 알림 아이콘이 보이지 않기를 바래.LocationListener가 잠자기 상태 일 때 GPS 아이콘을 끕니다.

내가 지금 가지고있는 것은 onLocationChanged a Thread.sleep (x)이지만 이것은 수면기에 아이콘을 유지합니다. 어떻게하면 좋을까요? 그리고 Thread.sleep을 사용하는 것보다 나은 접근법이 있습니까?

미리 감사드립니다.

답변

4

이 경우 LocationManager를 반드시 해제해야합니다. 내 애플 리케이션에서, 10 초마다 위치 만 확인했다. 왜냐하면 끄기로 설정하면 LocationManager의 min_distance 또는 min_time보다 배터리 전원이 약간 절약된다. 같은

뭔가 :

// Turning off 
mLocationManager.removeUpdates(gpsListener); 
mLocationManager = null; 

// Turning on again 
mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);    
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_MINTIME, GPS_MINDISTANCE, gpsListener); 

아이콘은을 locationManager까지 사라집니다 다시 켜집니다. 당신이 오버레이가있는 경우

+0

Fluffball 그래 내가 마지막으로 그것을 알아 냈다 당신이 설명하는 방식 그대로 해냈어 야. 나는 또한 Thread.sleep이 나쁘다는 것을 배웠다. Handler 클래스와 작업 지연 방법에 대해 읽어보십시오. 이것은 재귀 함수로 끝나기 때문에 이것은 끔찍한 것으로 판명되었습니다. 그리고 나는 가변 지연을 가지고 있기 때문에 반복 방법을 사용할 수 없습니다. 마침내 알람 매니저가 붙어서 매력처럼 작동합니다. 답장을 보내 주셔서 감사합니다 :) – Andreas

1

도 그들에 위치를 해제하는 생각 :

@Override 
protected void onResume() 
{ 
    Log.i("ProjetTEA", "onResumeMain"); 
    if (mLocationListener != null) 
    { 
     mLocationOverlay.enableMyLocation(); 
     mLocationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE); 
     mLocationManager.requestLocationUpdates(mBestProvider, 10000, 2, mLocationListener); 
    } 
    super.onResume(); 
} 

@Override 
protected void onPause() 
{ 
    Log.i("ProjetTEA", "onPauseMain"); 
    mLocationOverlay.disableMyLocation(); 
    mLocationManager.removeUpdates(mLocationListener); 
    mLocationManager = null; 
    super.onPause(); 
} 
관련 문제