代码之家  ›  专栏  ›  技术社区  ›  Aabauser

如何利用GPS获取经纬度

  •  0
  • Aabauser  · 技术社区  · 7 年前

            boolean isGPSEnabled = manager
                    .isProviderEnabled(LocationManager.GPS_PROVIDER);
           boolean isNetworkEnabled = manager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
            if (!isGPSEnabled && !isNetworkEnabled) {
                // no network provider is enabled
            } else {
                // First get location from Network Provider
                if (isNetworkEnabled) {
    
                    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    }
                    manager.requestLocationUpdates(
                            LocationManager.NETWORK_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    Log.d("Network", "Network");
                    if (manager != null) {
                        location = manager
                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) {
                            currentLatitude = location.getLatitude();
                            currentLongitude = location.getLongitude();
                        }
                    }
                }
                // if GPS Enabled get lat/long using GPS Services
                if (isGPSEnabled) {
                    if (location == null) {
                        manager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER,
                                MIN_TIME_BW_UPDATES,
                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        Log.d("GPS Enabled", "GPS Enabled");
                        if (manager != null) {
                            location = manager
                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                currentLatitude = location.getLatitude();
                                currentLongitude = location.getLongitude();
                            }
                        }
                    }
                }
                Log.d(TAG, "getLocation: "+currentLatitude+"   "+currentLongitude);
            }
    
        } catch (Exception e) {
            e.printStackTrace();
        }
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   blackkara    7 年前

    首先,您粘贴的代码范围是著名的,它是最后已知的网络位置和GPS提供商的组合。偶数 getLastKnownLocation 方法在之后调用 requestLocationUpdates 方法,此用法不完全可信。因为这些传感器不会以同步的方式给出结果。

    你有两个选择,一个是打电话 GetLastKnown位置 为GPS获取最后一次获得的位置,第二次是用 . 选择这个,将取决于您的方案。

        2
  •  0
  •   milan pithadia    7 年前

    使用这个简短的代码只需GPS就可以得到经度和经度

    LocationManager manager = (LocationManager) getSystemService(LOCATION_SERVICE);
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    return;
                }
                Location location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                Log.d("Location = ","Longitude "+location.getLongitude()+",Latitude "+location.getLatitude());