2013-01-06 39 views
0

沒有爲獲取當前位置下面的代碼:的LocationManager不更新的位置

final LocationManager manager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); 
LocationListener listener=new LocationListener() { 

    @Override 
    public void onLocationChanged(Location location) { 

     manager.removeUpdates(this); 
     Toast.makeText(MainActivity.this, "2", Toast.LENGTH_LONG).show(); 
     if (location!=null) { 
           doSomeAction(); 
     } 
     else { 
      Toast.makeText(MainActivity.this, LOCATION_IS_NULL_MESSAGE, Toast.LENGTH_LONG).show(); 
     } 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     manager.removeUpdates(this); 
     String newProvider=provider.equals(LocationManager.GPS_PROVIDER) ? LocationManager.NETWORK_PROVIDER : null; 
     if (newProvider==null) { 
      Toast.makeText(MainActivity.this, LOCATION_PROVIDERS_ARE_DISABLED_MESSAGE, Toast.LENGTH_LONG).show(); 
     } 
     else { 
      manager.requestLocationUpdates(newProvider, 0, 0, this); 
     } 
    } 

    @Override 
    public void onProviderEnabled(String provider) {} 

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

}; 
String provider=manager.isProviderEnabled(LocationManager.GPS_PROVIDER) ? LocationManager.GPS_PROVIDER : 
    LocationManager.NETWORK_PROVIDER; 
Location location=manager.getLastKnownLocation(provider); 
if (location!=null) { 
       doSomeAction(); 
} 
else { 
    Toast.makeText(this, "1", Toast.LENGTH_LONG).show(); 
    manager.requestLocationUpdates(provider, 0, 0, listener); 
} 

我看到吐司「1」每一次,但我從來沒有見過「2」敬酒,所以我的位置不會更新。請告訴我,我需要得到我的當前位置 - 我該如何解決我的問題?我使用網絡位置提供商。

+0

你改變你的位置實際上極好的位置? – Stan

+0

我在5米處改變了我的位置,但我相信如果沒有最後的已知位置,我會立即獲取當前位置,因爲我只需要獲取當前位置。 – user1841247

+0

爲了確保它能夠正常工作,請嘗試模擬相當大的[模擬器中的位置更改](http://stackoverflow.com/questions/2279647/how-to-emulate-gps-location-in-the-android-emulator)。 – Stan

回答

0

您是否確實附加了偵聽器?無需附加監聽器,它的代碼就沒用了,而且還有一個afaik:如果LocationManager沒有附加監聽器,它將不會更新任何位置。

0

嘗試這樣的:

public class Locato extends Activity implements LocationListener { 

LocationManager locman; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.idlayout); 
locman = (LocatonManager) getSystemService(Context.LOCATION_SERVICE); 

} 

public void onStatusChanged(String pr, int s, Bundle a) {} 

@Override 
    public void onProviderDisabled(String provider) { 
     Log.d("MyApp", "Provider disabled : " + provider); 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
Log.d("MyApp", "Provider enabled : " + provider); 
} 

@Override 
    public void onLocationChanged(Location location) { 
// do something 
    } 

您還必須添加的權限來體現:訪問粗略的位置和訪問