2014-01-20 3 views
-1

В моем приложении Обновление местоположения прекращается после перезагрузки устройства. Я использую как gps, так и сеть, чтобы найти текущее местоположение в моем приложении, после перезагрузки gps работает правильно, но когда я отключу gps, приложение, к сожалению, закрыто. это моя проблемаОбновление местоположения прекращает использование NETWORK_PROVIDER после перезагрузки устройства

это мой код Servicestart.java

public class Servicestart extends Service { 


    boolean gps_enabled = false; 
    boolean network_enabled = false; 

    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
@Override 
public void onCreate() { 
    // TODO Auto-generated method stub 
    Log.i("service started", "start"); 


     final LocationManager locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     if(userFunctions.isUserLoggedIn(getApplicationContext())){ 




    if(Broadcast.check==false) 
    { 
     LocationListener locatioListner = new LocationListener() { 


      public void onStatusChanged(String provider, int status, Bundle extras) { 
       // TODO Auto-generated method stub 

      } 

      public void onProviderEnabled(String provider) { 
       // TODO Auto-generated method stub 

      } 

      public void onProviderDisabled(String provider) { 
       // TODO Auto-generated method stub 
       get(); 
      } 

      public void onLocationChanged(Location location) { 

       Log.i("location", "loc"); 
       String latitude=String.valueOf(location.getLatitude()); 
       String longtitude=String.valueOf(location.getLongitude()); 
       //location updated starts here 



       } 

     }; 
     locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locatioListner); 

    } 





     } 

} 

void get() 
{ 

    final LocationManager locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    gps_enabled = locMan.isProviderEnabled(LocationManager.GPS_PROVIDER); 
    network_enabled = locMan.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

    if (!gps_enabled && !network_enabled) { Context context = getApplicationContext(); 
    int duration = Toast.LENGTH_SHORT; 
    Toast toast = Toast.makeText(context, "nothing is enabled", duration); 
    toast.show(); 

} 



    LocationListener locatioListnerGps = new LocationListener() { 

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

      } 

      public void onProviderEnabled(String provider) { 

       Toast.makeText(getApplicationContext(), "gpsenabled", 1000).show(); 
      } 

      public void onProviderDisabled(String provider) { 
       Toast.makeText(getApplicationContext(), "gps disable", 1000).show(); 

       get(); 

      } 

      public void onLocationChanged(Location location) { 

       String latitude=String.valueOf(location.getLatitude()); 
       String longtitude=String.valueOf(location.getLongitude()); 
       //location updated starts here 

      } 
     }; 
     LocationListener locationListenerNetwork = new LocationListener() { 

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

       } 

       public void onProviderEnabled(String provider) { 

        Toast.makeText(getApplicationContext(), "gpsenabled", 1000).show(); 
       } 

       public void onProviderDisabled(String provider) { 

        Toast.makeText(getApplicationContext(), "gps disable", 1000).show(); 
        get(); 


       } 

       public void onLocationChanged(Location location) { 

        String latitude=String.valueOf(location.getLatitude()); 
        String longtitude=String.valueOf(location.getLongitude()); 
        //location updated starts here 

       } 
      }; 


    if (gps_enabled) 
    { 
    locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
      locatioListnerGps); 
    locMan.removeUpdates(locationListenerNetwork); 
    } 
    if(network_enabled){ 
    locMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, 
      locationListenerNetwork); 
    locMan.removeUpdates(locatioListnerGps); 
} 

} 
} 

пожалуйста, помогите и направлять меня ...

, потому что я beginer

Спасибо заранее ...

+0

Я считаю, что у вас нет кода для автоматического запуска после повторной загрузки. Посетите этот вопрос [Как запустить приложение при запуске?] (Http://stackoverflow.com/q/6391902/2567598) – Vigbyor

+0

@Vigbyor У меня есть код для автоматического запуска после перезагрузки. Но мой вопрос не в том, что network_provider не работает после перезагрузки, это все .. – rohit

ответ

0
if (gps_enabled) 
    { 
    locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
      locatioListnerGps); 
    locMan.removeUpdates(locationListenerNetwork); 
    } 
    if(network_enabled){ 
    locMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, 
      locationListenerNetwork); 
    locMan.removeUpdates(locatioListnerGps); 
} 

Проверьте свой код первым. Почему вы удаляете обновления здесь?

Чтобы запустить службу на ботинке, пожалуйста, добавьте в манифесте:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

BroadcastReceiver not receiving BOOT_COMPLETED ЧК эту ссылку для получения дополнительной информации

Попробуйте этот код и дайте мне знать: Service код для обновления местоположения:

public class GPSTracker extends Service implements LocationListener { 
private Context mContext; 
private final String TAG = "GPSTracker"; 

// flag for GPS status 
boolean isGPSEnabled = false; 

// flag for network status 
boolean isNetworkEnabled = false; 

// flag for GPS status 
boolean canGetLocation = false; 

Location location; // location 
double latitude; // latitude 
double longitude; // longitude 

// The minimum distance to change Updates in meters 
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters 

// The minimum time between updates in milliseconds 
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute 

// Declaring a Location Manager 
protected LocationManager locationManager; 
Intent intent = new Intent(MainActivity.LOCATION_CHANGE); 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.d(TAG,"onStartCommand"); 
    Log.d(TAG, "flag " + flags + "startId" + startId); 
    this.mContext = this; 
    getLocation(); 
    return super.onStartCommand(intent, flags, startId); 
} 

public Location getLocation() { 
    try { 
     locationManager = (LocationManager) mContext 
       .getSystemService(LOCATION_SERVICE); 

     // getting GPS status 
     isGPSEnabled = locationManager 
       .isProviderEnabled(LocationManager.GPS_PROVIDER); 

     // getting network status 
     isNetworkEnabled = locationManager 
       .isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
     Log.d(TAG,"getlocation gpsEnabled " + isGPSEnabled + "networkenabled" 
       + isNetworkEnabled); 

     if (!isGPSEnabled && !isNetworkEnabled) { 
      // no network provider is enabled 
     } else { 
      this.canGetLocation = true; 
      // First get location from Network Provider 
      if (isNetworkEnabled) { 

       locationManager.requestLocationUpdates(
         LocationManager.NETWORK_PROVIDER, 
         MIN_TIME_BW_UPDATES, 
         MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
       Log.d("Network", "Network"); 
       if (locationManager != null) { 
        location = locationManager 
          .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
        if (location != null) { 
         latitude = location.getLatitude(); 
         longitude = location.getLongitude(); 
         Log.d(TAG,"LAtitude :" +latitude +"Lngitude:"+longitude); 
         onLocationChanged(location); 

        } 
       } 
      } 
      // if GPS Enabled get lat/long using GPS Services 
      else if (isGPSEnabled) { 
       if (location == null) { 
        locationManager.requestLocationUpdates(
          LocationManager.GPS_PROVIDER, 
          MIN_TIME_BW_UPDATES, 
          MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
        Log.d("GPS Enabled", "GPS Enabled"); 
        if (locationManager != null) { 
         location = locationManager 
           .getLastKnownLocation(LocationManager.GPS_PROVIDER); 
         if (location != null) { 
          latitude = location.getLatitude(); 
          longitude = location.getLongitude(); 
          onLocationChanged(location); 
         } 
        } 
       } 
      } 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return location; 
} 

/** 
* Stop using GPS listener 
* Calling this function will stop using GPS in your app 
*/ 
public void stopUsingGPS() { 
    if (locationManager != null) { 
     locationManager.removeUpdates(GPSTracker.this); 
    } 
} 
@Override 
public void onDestroy() { 
    Log.d(TAG,"onDestroy Called"); 
    stopUsingGPS(); 
    super.onDestroy(); 
} 
@Override 
public void onLocationChanged(Location newLocation) { 
    Log.d(TAG,"onLocationChanged new Latitude: " + newLocation.getLatitude() + 
      " \nLongitude :" + newLocation.getLongitude()); 
    intent.putExtra("latitude", newLocation.getLatitude()); 
    intent.putExtra("longitude", newLocation.getLongitude()); 
    sendBroadcast(intent); 
} 

@Override 
public void onProviderDisabled(String provider) { 
} 

@Override 
public void onProviderEnabled(String provider) { 
} 

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

@Override 
public IBinder onBind(Intent arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 
+0

спасибо за ваш ответ. это не проблема .. после того, как я удалю locMan.removeUpdates (...) код той же проблемы network_provider не работает после перезагрузки. пожалуйста, помогите мне ... – rohit

+0

Вы начали эту услугу на BOOT_complete .. –

+0

Проверьте мой отредактированный ответ –

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