android中打开地理位置,Android中获取地理位置经纬度

一种简单的获取经纬度的方法, 室内可能获取不到。需要打开GPS。

/**

* 获取用户地理位置,未获取到为默认显示 0.0#0.0

* 需要权限ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION,INTERNET

*

* @param context

* @return 纬度#经度

*/

public static String getUserLocation(Context context) {

double latitude = 0.0, longitude = 0.0;

String locationProvider = null;

// 获取地理位置管理器

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE );

// 判断网络是否可用

Boolean isNet = isConnectingToInternet(context);

Log. i(TAG, "isNet" + isNet);

if (isNet) {

locationProvider = LocationManager.NETWORK_PROVIDER ;

} else if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

// GPS室内会获取不到位置

locationProvider = LocationManager. GPS_PROVIDER;

} else {

locationProvider = LocationManager.PASSIVE_PROVIDER ;

Log. i(TAG, "无法获取当前位置, 请检查网络是否可用和GPS是否开启" );

}

// 获取Location

Location location = locationManager.getLastKnownLocation(locationProvider);

if (location != null) {

latitude = location.getLatitude();

longitude = location.getLongitude();

// 不为空,显示地理位置经纬度

Log. i(TAG, "纬度:" + latitude + "经度:" + longitude);

}

return latitude + "#" + longitude;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio ,可以使用 Google Play Services 提供的 Location API 来获取经纬度。以下是获取用户当前位置经纬度的步骤: 1. 在 AndroidManifest.xml 文件添加以下权限: ```xml <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ``` 2. 在 build.gradle(Module:app) 文件添加以下依赖: ```gradle implementation 'com.google.android.gms:play-services-location:18.0.0' ``` 3. 在代码添加以下代码: ```java // 创建LocationManager对象 LocationManager locationManager = (LocationManager) getSystemService(Context.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) { // 请求获取位置信息的权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1); return; } // 获取位置提供器名称,GPS或是NetWork Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); // 高精度 criteria.setAltitudeRequired(false); // 不要求海拔 criteria.setBearingRequired(false); // 不要求方位 criteria.setCostAllowed(true); // 允许有花费 criteria.setPowerRequirement(Criteria.POWER_LOW); // 低功耗 String provider = locationManager.getBestProvider(criteria, true); // 获取LocationProvider // 获取位置信息 Location location = locationManager.getLastKnownLocation(provider); if (location != null) { double latitude = location.getLatitude(); // 获取纬度 double longitude = location.getLongitude(); // 获取经度 Log.d("TAG", "latitude: " + latitude); Log.d("TAG", "longitude: " + longitude); } ``` 注意:需要在 Android 手机上打开定位功能才能获取到位置信息。如果获取不到位置信息,可以尝试在设置打开定位服务。同时,获取位置信息可能会比较耗时,建议在子线程执行,避免阻塞主线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值