需要Android活动等到GPS位置获得

use*_*546 6 gps android wait android-location android-activity

对不起我的英语不好.我正试图从GPS获取一个位置以放置全局变量纬度,经度.GPS打开,但在从GPS检索数据之前,活动仍在继续.

换句话说,我的需要...方法getCurrentLocation()只有在找到位置并填充经度和纬度变量时才能完成,所以我可以在其他方法中使用它们.我知道......用户必须等待......我将在屏幕上显示一些内容.我该怎么办?谢谢

我想我正在某个地方跳过停止听GPS.哪里更好?

代码如下:

//Method to retrieve coordinates
public void getCurrentLocation() {
    //Use GPS if possible
    if(manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        //assign Listener to GPS
        manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
        Toast.makeText(this, LocationManager.GPS_PROVIDER, Toast.LENGTH_SHORT).show();
    }
    else if(manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){//toherwise, use NETWORK
        //assign Listener to NETWORK
        manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener);
        Toast.makeText(this, LocationManager.NETWORK_PROVIDER, Toast.LENGTH_SHORT).show();
    }
}

//Class to store the location recived in two variables
final class MyLocationListener implements LocationListener {

    @Override
    public void onLocationChanged(Location location) {
        //coordinates storing
        latitude = String.valueOf(location.getLatitude());
        longitude = String.valueOf(location.getLongitude());
        Toast.makeText(getApplicationContext(), latitude + longitude, Toast.LENGTH_LONG).show();
    }

    @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
    }
}
Run Code Online (Sandbox Code Playgroud)

Sho*_*uri 2

如果您希望 Android 活动等待获取 GPS 位置,您可以尝试使用AsyncTask它。请参阅Android 查找 GPS 位置一次,显示加载对话框以获取答案。基本上onPreExecute您可以启动对话框(它在doInBackground调用之前启动)。这意味着您正在等待,直到可以定位并显示对话框的时间。然后就doInBackground可以获取位置了。之后onPostExecute调用完成。你可以从里面停下来onPostExecuteonPostExecute您可以检查该位置是否不为空,然后如果需要,也 可以从内部调用其他函数。

这可能是一种方式。您可以从AsyncTask Android 示例学习基本示例。您还可以从阅读此处的文档开始。

其他一些类似的有用问题:

等待当前位置 - GPS - Android Dev

在android中立即获取位置

希望这可以帮助。