判断 Android 设备是否开启定位服务,有以下几种常用的方式:
1. 检查位置权限状态:
```java
int locationPermissionStatus = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION);
if (locationPermissionStatus == PackageManager.PERMISSION_GRANTED) {
// 定位权限已获取
} else {
// 定位权限未获取
}
```
2. 检查位置服务是否开启:
```java
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
boolean isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (isGpsEnabled || isNetworkEnabled) {
// 位置服务已开启
} else {
// 位置服务未开启
}
```
3. 使用 Google Play Services 提供的 API 检查:
```java
GoogleApiClient googleApiClient = new GoogleApiClient.Builder(context)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
googleApiClient.connect();
int locationSettingsStatus = LocationSettingsStatusCodes.SUCCESS;
try {
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(LocationRequest.create());
LocationSettingsRequest locationSettingsRequest = builder.build();
locationSettingsStatus = LocationServices.SettingsApi.checkLocationSettings(googleApiClient, locationSettingsRequest)
.getStatus()
.getStatusCode();
} catch (Exception e) {
e.printStackTrace();
}
if (locationSettingsStatus == LocationSettingsStatusCodes.SUCCESS) {
// 位置服务已开启
} else {
// 位置服务未开启
}
```
这几种方式各有优缺点,可根据实际情况选择合适的方式。