0

現在の場所を取得しようとしており、その LAt と LON を別のクラスに送信しています。しかし、私のアプリケーションは現在の場所を取得できず、最後の場所が表示されています。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();
    }
}
} 
4

2 に答える 2

0

のドキュメントからgetLastKnownLocation()

指定されたプロバイダーから取得された最後の既知の位置修正からのデータを示す Location を返します。

これは、プロバイダーを開始せずに実行できます。この場所は、デバイスの電源を切って別の場所に移動した場合など、古い可能性があることに注意してください。

プロバイダーが現在無効になっている場合は、null が返されます。

これは、 の最後の修正に基づいてgetLastKnownLocation()を取得することを意味します。更新したい場合は、受け取ったLocationProviderLocationsLocationonLocationChanged()

于 2014-01-16T17:13:09.650 に答える