无法在应用程序启动时获取位置

时间:2011-08-20 15:34:24

标签: java android google-maps

我正在尝试开发一个小应用程序,它在启动时会在吐司或其他东西中显示当前位置的名称。我写的代码将在显示器上显示Toast,只有我从Eclipse的Emulator Control View手动发送坐标。

我的问题:有没有办法强制在启动时以某种方式发送坐标,因为我想在加载应用程序时使用Toast?我怎么能这样做?感谢。

以下是代码:

public class HomeActivity extends Activity implements LocationListener {

    private LocationManager locationManager;
    private String welcomeMsg;
    private String crtLocationName;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        initLocationManager();
    }

    private void initLocationManager(){
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 5000, this);
    }


     */
    @Override
    public void onLocationChanged(Location location) {
        if (location != null) {
            try {
                crtLocationName = getLocationName(location);

                Toast.makeText( getApplicationContext(), crtLocationName, Toast.LENGTH_LONG).show();
            } catch (IOException e) {
                welcomeMsg = "Location cannot be determined";
                crtLocationName = "";
            }

//          locationManager.removeUpdates(this);
        }
    }


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

    }

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

    }

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

    }

} 

1 个答案:

答案 0 :(得分:2)

由于仿真器没有GPS接收器,只有在通过DDMS提供一些新坐标时才会调用方法onLocationChanged

在真正的手机上,它不会立即显示Toast;它将在找到GPS卫星并接收GPS定位之前等待,然后它将显示Toast消息。