2013-08-07 88 views
0

我有檢查數據庫的代碼,如果用戶想讓GPS運行。我需要運行這個每隔幾分鐘我可以使用Intentservice來運行該方法。我已經嘗試過實現Looper,但是最終代碼再也沒有運行檢查。沒有Looper我得到Looper錯誤,我不能在線程中創建一個沒有調用Looper.prepare()的處理程序;從intentservice切換位置更新

Timer timer = new Timer(); 
TimerTask gpsTask = new TimerTask() { 
    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     gpsPlotter(); 
    } 
}; 

// schedule the task to run starting now and then every hour... 
timer.schedule(gpsTask, 0, 200); 


private void gpsPlotter(){ 
     // TODO Auto-generated method stub 
      try{ 
       BeaconHandler dbg = new BeaconHandler(Ping.this); 
       List<Beacon> beacons = dbg.getAllBeacons(); 
       int activecheck = 0; 
       for(Beacon bn : beacons){ 
        activecheck = activecheck + bn.getStatus(); 
       } 
       //db.close(); 
       if(activecheck > 0 && updateset == 0){ 
        pinger.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, reciever); 
        updateset = 1; 
        Log.d("GPS RESET", "Listener Set"); 
       } 
       else if(activecheck == 0 && updateset == 1){ 
        pinger.removeUpdates(reciever); 
        updateset = 0; 
        Log.d("GPS RESET", "Listener Removed"); 
       } 
       else{ 
        Log.d("GPS RESET", "No Modifications"); 
       } 
      } 
      catch(Exception e){ 
       Log.e("GPS RESET ERROR", e.getMessage(), e); 
      } 
     } 

回答

0

我發現我的問題。當我開始請求位置更新時,我需要像這樣註冊它。

pinger.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, reciever, getMainLooper());