2013-04-26 3 views
1

Я пытаюсь дважды вызвать менеджера местоположений в своей службе.Вызов менеджера местоположений дважды в службе в android

Сначала он вызывается диспетчер onStart, а затем я помещаю таймер на 20 секунд, и я снова его вызываю.

Первый раз, когда он работает, но второй раз через 20 секунд менеджер место не называется вообще ..

Ниже приведен код, который я пробовал:

 public void onStart(Intent intent, int startId) 
    { 
    super.onStart(intent, startId); 

    Log.e("Location1", "Inside onStart"); 

    t = new Timer(); 

    locationFirst = "First"; 

    talker = new TextToSpeech(this, this); 

    location = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 


    locationListener = new MyLocationListener(); 
    location.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 10,locationListener); 
} 

      public void testMethod() 
     { 
    //Declare the timer 


     //Set the schedule function and rate 
       t.scheduleAtFixedRate(new TimerTask() { 

     @Override 
     public void run() { 

      Log.e("Time",""+time); 
      time += 1; 
      String todis = String.valueOf(time); 


      if(todis.contains("20")) 
      { 
       Looper.myLooper(); 
       Looper.prepare(); 

       talker.speak("Testing Service inside 20 in a App",TextToSpeech.QUEUE_ADD,null); 
       locationFirst = "Second"; 
       locationTocall(); 
       time = 0; 
       t.cancel(); 

      } 

     } 

       }, 0, 1000); 


      } 


    public void locationTocall() 
{ 
    locationListener = new MyLocationListener(); 
    location.requestLocationUpdates(location.NETWORK_PROVIDER, 5000, 10,locationListener); 
      } 


    private class MyLocationListener implements LocationListener 
{ 
    @Override 
    public void onLocationChanged(Location loc) 
    { 
     Log.e("Location1", "Inside MyLocation"); 

     String longitude = String.valueOf(loc.getLongitude()); 
     String latitude = String.valueOf(loc.getLatitude()); 

     String s = latitude+"\n"+longitude; 

     Log.e ("Location1", " "+s); 

     location.removeUpdates(locationListener); 
        if(locationFirst.equalsIgnoreCase("FIRST")) 
     {   
      testMethod(); 
     } 
     else 
     { 

     } 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 

    } 

} 

ответ

0

минимальное расстояние для обновление местоположения в вашем случае составляет 10 метров возможно из-за этого.

0

Я думаю, что вам не нужен звонок timer.start() в вашем методе onStart.

Смежные вопросы