안드로이드 개발 질문/답변
(글 수 45,052)
맵뷰에 본인의 위치를 표시해주려고 합니다.
위치제공자를 찾는 부분을 아래와 처럼 하여 조건에 맞는 장치를 찾도록 했습니다.
Criteria cr = new Criteria(); cr.setAccuracy(Criteria.ACCURACY_FINE); //정확도 우선 cr.setAltitudeRequired(true); //고도에 대한 정보 포함 cr.setPowerRequirement(Criteria.NO_REQUIREMENT); //전원사용 여부 관계없음 bestProvider_name = lom.getBestProvider(cr, true); //선택된 장치 이름
헌데 문제는 gps가 켜져있는 경우에는 무조건 gps를 우선으로 하더라구요.
뭐 실외에서야 상관이 없는데 실내에서는 gps신호를 잡을 수 없으니 문제가 생기네요.
이와같이 실내에서와 같이 gps가 켜져 있는 경우에도 일정시간이상 실제 위성으로부터 gps좌표정보를
받지 못할 경우 위치제공자를 강제로 network로 변경하려고 하는데 어떤방법이 있을까요?
찾아보니 gps의 경우 최소 3개 이상의 위성으로부터 신호를 받아야만 정상작동을 한다고 하던데...
혹시 접촉하는 위성의 갯수를 알 수 있는 방법이 있을까요?




위성갯수같은경우 이렇게 하시면 될듯합니다 ^^
GpsStatus.Listener GPSListner = new GpsStatus.Listener() {
public void onGpsStatusChanged(int event) {
// TODO Auto-generated method stub
GpsStatus status = lm.getGpsStatus(null);
Iterable sats = status.getSatellites();
Iterator satI = sats.iterator();
int count = 0;
while(satI.hasNext()){
GpsSatellite gpssatellite = (GpsSatellite) satI.next();
if (gpssatellite.usedInFix()){
count++;
}
}
if(count > 5){
Toast.makeText(*.this, "GPS 잡혔습니다." + count, 1000).show();
}
}
};