【问题标题】:Not getting the location [duplicate]没有得到位置[重复]
【发布时间】:2015-05-26 08:13:12
【问题描述】:

我正在制作一个应用程序,我必须在其中显示 1/2 秒的启动画面。在加载启动画面时,我必须获取用户位置。不关心位置准确性。所以为此我编写了一个代码但我总是从位置得到空值。

代码

private Context context;

    private LocationManager locationManager;

    Location location;

    double latitude;
    double longitude;

    public GetLocation(Context context) {
        this.context = context;
        getLocation();
    }


    private Location getLocation() {


        locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
        location = locationManager.getLastKnownLocation(getProviderName());
        if (location == null) {

            locationManager.requestLocationUpdates(getProviderName(), 0, 0, this);
        }

        return location;


    }


    String getProviderName() {
         locationManager = (LocationManager) context
                .getSystemService(Context.LOCATION_SERVICE);

        Criteria criteria = new Criteria();
        criteria.setPowerRequirement(Criteria.POWER_LOW); // Chose your desired power consumption level.
        criteria.setAccuracy(Criteria.ACCURACY_FINE); // Choose your accuracy requirement.
        criteria.setSpeedRequired(true); // Chose if speed for first location fix is required.
        criteria.setAltitudeRequired(false); // Choose if you use altitude.
        criteria.setBearingRequired(false); // Choose if you use bearing.
        criteria.setCostAllowed(false); // Choose if this provider can waste money :-)

        // Provide your criteria and flag enabledOnly that tells
        // LocationManager only to return active providers.
        return locationManager.getBestProvider(criteria, true);
    }

    @Override
    public void onLocationChanged(Location location) {

        Toast.makeText(context,""+location,Toast.LENGTH_LONG).show();

    }

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

        Toast.makeText(context,provider,Toast.LENGTH_LONG).show();

    }

    @Override
    public void onProviderEnabled(String provider) {

        Toast.makeText(context,provider,Toast.LENGTH_LONG).show();

    }

    @Override
    public void onProviderDisabled(String provider) {

        Toast.makeText(context,provider,Toast.LENGTH_LONG).show();

    }

    public void stopUsingGPS() {
        if (locationManager != null) {
            locationManager.removeUpdates(this);
        }
    }

    /**
     * Function to get latitude
     */
    public double getLatitude() {
        if (location != null) {
            latitude = location.getLatitude();
        }

        // return latitude
        return latitude;
    }

    /**
     * Function to get longitude
     */
    public double getLongitude() {
        if (location != null) {
            longitude = location.getLongitude();
        }

        // return longitude
        return longitude;
    }

权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

用法

private void getLocation() {

        getLocation = new GetLocation(contextActivity);

        latitude = getLocation.getLatitude();
        longitude = getLocation.getLongitude();

        if (latitude != 0 && longitude != 0) {

            getLocation.stopUsingGPS();
        }
    }

请帮帮我。 谢谢。

【问题讨论】:

  • 发布完整代码并检查对象是否初始化
  • 我更新了我的帖子

标签: android gps location locationmanager


【解决方案1】:

getLastKnownLocation 如果尚未获取位置,则返回 null。如果是您的设备的情况,则以下 sn-p

if (location == null) {
    locationManager.requestLocationUpdates(getProviderName(), 0, 0, this);
}

阻止您注册LocationListener,为您的位置经理回调。

【讨论】:

  • 怎么做,先生,请您解释一下
  • 先生,您能帮帮我吗?
  • 移除 `if` ,并在调用 onLocationChanged 时使用广播事件
  • 先生,我已经删除了 if 条件,但它仍然没有从监听器中获得敬酒
  • 您必须等到获取位置。尝试同时使用网络和 gps 提供商。它会让事情变得更快
【解决方案2】:

我猜你没有更新 onLocationChanged 中的位置。您是否在吐司文本中获取位置非空对象?

我的答案是使用通过 onLocationChange 事件接收到的位置来更新位置成员变量。

【讨论】:

  • 不,我也没有得到敬酒
  • 嗯...尝试使用融合位置 API 来获取位置。与位置管理器相比,融合位置 API 速度更快,并且还提供更准确的位置。在此处查找更多信息:developer.android.com/training/location/…
猜你喜欢
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-07
  • 2018-02-12
  • 1970-01-01
相关资源
最近更新 更多