2011-10-07 2 views
2

몇 초마다 서버에 위치 정보를 보내야하는 틈새 어플리케이션이 있습니다. (휴대 전화의 배터리 수명에 대해 걱정하지 마십시오.) 몇 초마다 스레드 나 무언가를 어떻게 만들 수 있습니까? gpslistener가 있지만 해당 하위 클래스의 이름은 위치가 변경된 경우에만 정보를 제공하려는 것으로 보이는 "onlocationchanged"입니다. 정의 할 간격마다 서버에 전송되는 업데이트 된 위치가 필요합니다.Android 메쏘드는 매 초마다 실행합니다 (GPS와 서버 호출 포함)

나는 이것을한다?

통찰력은 서비스 onCreate 이것을

답변

8

장소를 알.

mTimer.scheduleAtFixedRate(new TimerTask() { 
    @Override 
    public void run() { 
      // What you want to do goes here 
     } 
    }, 0, REFRESH_TIME); 

REFRESH_TIME 밀리 초 단위 주파수 또는 시간 인 경우 run가 반복.

+0

을 얻을 빈도를 사용자 정의하려면 다음을 사용'mTimer' – CQM

+1

mTimer 타이머 클래스입니다. – blessenm

+0

Java 타이머는 별도의 스레드에서 실행되므로 더 많은 Android-y 접근 방식은 처리기를 사용하는 것입니다. 다른 한편, 네트워크 요청은 어쨌든 별도의 스레드에서 발생하는 것이 바람직합니다. – Delyan

1

현재 위치를 안드로이드에게 물어볼 수는 없습니다. GPS는 시간이 걸리고 사용하지 못할 수 있습니다. 이것은 post에 명시되어 있습니다. 당신이 할 수있는 일

은 user500865에서 언급 한 것과 같은 타이머를 사용하고, 당신은 마지막 위치를 추적하고 새로운 경우 몇 가지 논리를 할 수있는 다음이

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 1, this); 
Location l = null; 
l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

같은 마지막으로 알려진 위치를 요청 위치가 다르거 나 동일합니다. 알림

minTime 년 - 최소 시간 간격을 밀리 :

requestLocationUpdates 메소드는 다음 매개 변수를 갖는다. 이 필드는 전원을 절약하기위한 힌트로만 사용되며 위치 업데이트 간의 실제 시간은이 값보다 크거나 작을 수 있습니다.

minDistancem

의 알림 년 - 최소 거리 간격,

당신이 어떤 데이터 유형 위치 업데이트

+0

thanks I 이것과 타이머 스레드를 모두 수행했습니다. – CQM

관련 문제