2015-12-04 2 views
-1

этот код работает со мной, чтобы выполнить координацию, даже если приложение не используется, но когда я переключаю свой телефон, а затем снова открываю мой телефон, он не работает в фоновом режиме, мне нужно продолжать работу на заднем фоне. даже если пользователь мобильный сдоба выключен, а затем снова открываетсяс помощью службы в android application

public class Check2 extends Service 
{ 

    @Override 
    public void onTaskRemoved(Intent rootIntent) { 
     super.onTaskRemoved(rootIntent); 
    } 

    private static final String TAG = "GPS"; 
     private LocationManager mLocationManager = null; 
     private static final int LOCATION_INTERVAL = 1000*6; 
     private static final float LOCATION_DISTANCE = 0f; 

     private class LocationListener implements android.location.LocationListener{ 
      Location mLastLocation; 

      public LocationListener(String provider) 
      { 

       Log.e(TAG, "LocationListener " + provider); 
       mLastLocation = new Location(provider); 

      } 

      @Override 
      public void onLocationChanged(Location location) 
      { 
       Log.e(TAG, "onLocationChanged: " + location); 
       mLastLocation.set(location); 


       double lat = mLastLocation.getLatitude();; 
       double lon = mLastLocation.getLongitude(); 

       Toast.makeText(getApplicationContext(), "Lat: "+lat+" Long: "+lon, Toast.LENGTH_LONG).show(); 

      } 
      @Override 
      public void onProviderDisabled(String provider) 
      { 
       Log.e(TAG, "onProviderDisabled: " + provider); 
      } 
      @Override 
      public void onProviderEnabled(String provider) 
      { 
       Log.e(TAG, "onProviderEnabled: " + provider); 
      } 
      @Override 
      public void onStatusChanged(String provider, int status, Bundle extras) 
      { 
       Log.e(TAG, "onStatusChanged: " + provider); 
      } 
     } 
     LocationListener[] mLocationListeners = new LocationListener[] { 
       new LocationListener(LocationManager.GPS_PROVIDER), 
       new LocationListener(LocationManager.NETWORK_PROVIDER) 
     }; 
     @Override 
     public IBinder onBind(Intent arg0) 
     { 
      return null; 
     } 


     @Override 
     public int onStartCommand(Intent intent, int flags, int startId) 
     { 
      LocationManager loc; 
      loc=(LocationManager)getApplicationContext().getSystemService(Context.LOCATION_SERVICE); 
      LocationListener listener =new LocationListener(TAG); 
      Location location ; 
      Log.e(TAG, "onStartCommand"); 
      super.onStartCommand(intent, flags, startId); 
      initializeLocationManager(); 
      try { 

       mLocationManager.requestLocationUpdates(
         LocationManager.NETWORK_PROVIDER, LOCATION_INTERVAL, LOCATION_DISTANCE, 
         mLocationListeners[1]); 


       // location = listener.mLastLocation; 
       location= loc.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
        listener.onLocationChanged(location); 

       Log.d("is work","here"); 
      } catch (java.lang.SecurityException ex) { 
       Log.i(TAG, "fail to request location update, ignore", ex); 
      } catch (IllegalArgumentException ex) { 
       Log.d(TAG, "network provider does not exist, " + ex.getMessage()); 
      } 
      try { 

       mLocationManager.requestLocationUpdates(
         LocationManager.GPS_PROVIDER, LOCATION_INTERVAL, LOCATION_DISTANCE, 
         mLocationListeners[0]); 
       location= loc.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
       listener.onLocationChanged(location); 

       Log.d("is work", "here"); 
      } catch (java.lang.SecurityException ex) { 
       Log.i(TAG, "fail to request location update, ignore", ex); 
      } catch (IllegalArgumentException ex) { 
       Log.d(TAG, "gps provider does not exist " + ex.getMessage()); 
      } 
      return START_STICKY; 
     } 


    @Override 
     public void onCreate() 
     { 
      Log.e(TAG, "onCreate"); 

     } 
     @Override 
     public void onDestroy() 
     { 
      Log.e(TAG, "onDestroy"); 
      super.onDestroy(); 
      if (mLocationManager != null) { 
       for (int i = 0; i < mLocationListeners.length; i++) { 
        try { 
         mLocationManager.removeUpdates(mLocationListeners[i]); 
        } catch (Exception ex) { 
         Log.i(TAG, "fail to remove location listners, ignore", ex); 
        } 
       } 
      } 
     } 
    private void initializeLocationManager() { 
     Log.e(TAG, "initializeLocationManager"); 
     if (mLocationManager == null) { 
      mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE); 

     } 
    } 

ответ

1

Создать приемник вещания для прослушивания для загрузки Полного события

Проверьте ссылку на учебники Broadcast receiver for Boot Action

+0

вы имеете в виду поместить этот код в эфир или положить намерение транслировать – menna

+0

в радиовещательного приемника ** OnReceive метод ** назвать ваш класс обслуживания –

+0

его работает спасибо – menna

0
  • 1 до Vivek, но также вы должны запустить свою службу в другом процессе из своего приложения. Например,

    < < служба андроид: имя = "TweetCollectorService"

     android:process=":remote"> 
    

Тогда в службе, вы должны добавить BroadcastReceiver получить намерения BOOT_COMPLETE. Если вы хотите эту услугу, чтобы продолжать работать независимо от того, что, считают replacind startService методом с startForeground

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