2011-08-31 5 views
0

Android (및 모바일) 프로그래밍의 새로운 기능입니다. 매분 GPS 위치를 설정하여 응용 프로그램을 테스트하려고합니다. ScheduledExecutorService를android의 예약 된 작업에서 테스트 위치 설정

를 사용하는 것은 그래서 내 실행 가능한 클래스 그렇게하려고 :

final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 
final Runnable locationTest = new LocationTestScheduledTask(this); 
final ScheduledFuture sched= 
     scheduler.scheduleAtFixedRate(locationTest , 10, 10, TimeUnit.SECONDS); 

I를이에서

public class LocationTestScheduledTask implements Runnable {  
    private Activity activity;  
    public LocationTestScheduledTask(Activity a) 
    { 
     activity = a; 
    }  
    @Override 
    public void run() { 
     LocationManager locationManager = 
      (LocationManager)activity.getSystemService(Context.LOCATION_SERVICE); 
     locationManager.addTestProvider("Test", false, false, false, false, false, false, false, Criteria.POWER_LOW, Criteria.ACCURACY_FINE); 
     locationManager.setTestProviderEnabled("Test", true); 

     // Set up your test 

     Location location = new Location("Test"); 
     Random rand = new Random(); 

     location.setLatitude(rand.nextDouble()); 
     location.setLongitude(rand.nextDouble()); 
     locationManager.setTestProviderLocation("Test", location); 

     // Check if your listener reacted the right way 

     locationManager.removeTestProvider("Test");   
    }  
} 

난() 내은 Activity.onCreate에서 작업을 호출하는 방법입니다 위치가 변경된 것을 볼 수 없기 때문에 여기에서 뭔가 잘못했을 것입니다.

나는 또한 TimerTask와 매우 비슷한 것을 시도했지만 그 결과도 없다.

누구든지 코드에 무슨 문제가 있다고 지적 할 수 있습니까?

답변

1

핸들러를 사용할 수 있습니다. 나는 그것이 더 쉽게 일을 할 것이라고 말할 것입니다 : 당신이 위치를 매 순간을 변경하려면

Handler handler = new Handler(); 
Runnable locationTest = new LocationTestScheduledTask(this); 

handler.postDelayed(locationTest, 1000*60); // 1000 miliseconds * 60 miliseconds = 1 minute 

당신이 당신의에서 onCreate뿐만 아니라 클래스의 본문에 handler.postDelayed(...)을 둘 것입니다.

에뮬레이터에서 앱을 실행 한 다음 Eclipse에서 DDMS로 이동하면 장치 gps 위도와 경도 좌표를 보낼 수 있습니다.

아래 번째 이미지의 좌표를 보낼 위치를 볼 수 있습니다 대답에 대한

enter image description here

+0

감사합니다! postDelayed()는 작업 예약에 완벽하게 작동했지만 setTestProviderLocation에 문제가있었습니다. 여기 해결책을 찾았습니다 - http://groups.google.com/group/android-developers/browse_thread/thread/07e56400d349817b?pli=1, 이제 작동합니다 !!! – Ginandi

관련 문제