2014-01-16 5 views
0

Я пытаюсь получить текущее местоположение и отправить его LAt и LON в другой класс. Но мое приложение не получает текущее местоположение, оно показывает LAST LOCATION. Пожалуйста, помогите мне, как получить текущее местоположение с использованием GPS и NETWORK-провайдера.Не получать текущее местоположение

Ниже приведен код:

public class location implements LocationListener 
{ 
private LocationManager mgr; 
private String best; 
Location location; 
public static double myLocationLatitude; 
public static double myLocationLongitude; 

public void locUpdate(Context context) 
{ 

    mgr = (LocationManager) context.getSystemService(context.LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    // criteria.setAccuracy(Criteria.ACCURACY_COARSE); 

    best = mgr.getBestProvider(criteria, true); 
    mgr.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER,0,0,this); 

    try{ 
    Location location = mgr.getLastKnownLocation(best); 
    Intent i = new Intent(); 
    i.setClass(context,sentsms.class); 
    i.putExtra("latitude", location.getLatitude()); 
    i.putExtra("longitude", location.getLongitude()); 
    i.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);      
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

    // Launch the new activity and add the additional flags to the intent 
    context.getApplicationContext().startActivity(i); 
    } 
    catch(Exception e) 
    { 

    } 
} 





public void onLocationChanged(Location location) { 

    dumpLocation(location); 
} 

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

} 

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

} 

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

} 


protected void onPause() 
{ 

    // super.onPause(); 
    mgr.removeUpdates(this); 
} 

protected void onResume() { 

    // super.onResume(); 
    mgr.requestLocationUpdates(best, 15000, 10, this); 
} 

private void dumpLocation(Location l) { 

    if (l != null){ 

     myLocationLatitude = l.getLatitude(); 
     myLocationLongitude = l.getLongitude(); 
    } 
} 
} 

ответ

0

Из документов для getLastKnownLocation():

Возвращает Местоположение, указывающие данные из последнего известного местоположения фикса, полученные от данного поставщика.

Это можно сделать без запуска провайдера. Обратите внимание, что это местоположение может быть устаревшим, например, если устройство было выключено и переместилось в другое место.

Если провайдер отключен, возвращается null.

Это означает, что getLastKnownLocation() будет получать Location на основе последнего исправления в Provider. Если вы хотите обновляться Locations, используйте Location полученные в onLocationChanged()

0

Пожалуйста, попробуйте этот путь

LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
// Creating a criteria object to retrieve provider 
Criteria criteria = new Criteria(); 
// Getting the name of the best provider 
String provider = locationManager.getBestProvider(criteria, true); 
if (provider != null) { 

location = locationManager.getLastKnownLocation(provider); 
// locationManager.requestLocationUpdates(provider, 1000*60*60, 
// 1000, this); 
// update only in 1 hour and 1 km of distance 
locationManager.requestLocationUpdates(provider, 100, 1, this); 
} 
+1

благодаря Маниш наконец он работал .... – Yushi

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