위치정보 Provider를 상황에 따라 실시간으로 바꿔줄 수 있나요?

 

지금까지는 GPS_PROVIDER 만 이용해서 만들어왔는데

GPS를 계속 켜놓고 다니는 사람은 거의 없을거고.. 정확도는 높여야겠고..

어플 실행하고 GPS 안켜져있으면 다이얼로그 띄우고 설정창으로 들어갈 수 있게 만들었거든요.

 

그러니까..

 

mLocationListener=new LocationListener(){
//onLocationChanged 구현
public void onProviderDisabled(String arg0){
gpsAlert();
}
 lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 3, mLocationListener);

이렇게 구현되어있는 상태입니다.

(onProviderDisabled 안에 다이얼로그 띄우는 코드 넣어주니까 gps안켜져있으면 실행시키더라구요)

 

그런데 GPS가 켜져있음에도

GPS값을 처음 받아올때 시간도 오래 걸리고

이동 중 건물안에 들어가거나 하면 값을 못받아오는 상황이 생겨서..

 

이런 경우 실시간으로 감지(아마도 시간차를 이용해야겠죠?)해서 NETWORK_PROVIDER로 바꿔주고 싶습니다.

 

방법을 아시거나, 혹은 아이디어 있으신분 답변 완전 환영합니다!!