gpt4 book ai didi

android - 使用对话框启用 GPS

转载 作者:搜寻专家 更新时间:2023-11-01 07:52:20 24 4
gpt4 key购买 nike

我正在尝试通过用户确认对话框启用 GPS 设置。

这是代码

    public void turnGPSOn() {
LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
boolean enabled = service
.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!enabled) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
this);
alertDialogBuilder
.setMessage("GPS is disabled in your device. Enable it?")
.setCancelable(false)
.setPositiveButton("Enable GPS",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
/** Here it's leading to GPS setting options*/
Intent callGPSSettingIntent = new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(callGPSSettingIntent);
}
});
alertDialogBuilder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = alertDialogBuilder.create();
alert.show();
}
}

以上代码将引导用户进入 gps 设置选项。但我在许多应用程序(最近的应用程序)中看到,在确认 gps 设置后将自动启用高精度。

我的问题是我需要在用户确认(对话框"is")后启用 GPS 设置为省电模式(或任何其他模式),而无需进入 GPS 设置。

MinSDK:9
TargetSDK:23
BuildToolVer:23.0.1

问候。

最佳答案

您可以为此使用 GoogleApiClient

  private static GoogleApiClient client;
private Location mLastLocation;

同时实现必要的接口(interface)。

GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener

我已经实现了上面这些接口(interface)

像这样在 OnCreate 中初始化 GoogleApiClient。添加必要的 Api

  if (client == null) {
client = new GoogleApiClient.Builder(mContext)
.enableAutoManage(context, 0, this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}

您可以通过在位置请求中设置优先级来设置准确性。

这些是不同的优先级。

LocationRequest.PRIORITY_HIGH_ACCURACY
LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY
LocationRequest.PRIORITY_LOW_POWER
LocationRequest.PRIORITY_NO_POWER

在 onConnected 方法中发出位置请求。

onConnected 方法在 GoogleApiClient.ConnectionCallbacks 接口(interface)中可用。

@Override
public void onConnected(Bundle bundle) {

final LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(30 * 1000);
locationRequest.setFastestInterval(5 * 1000);

LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(locationRequest);

builder.setAlwaysShow(true);
result = LocationServices.SettingsApi.checkLocationSettings(client, builder.build());

if (result != null) {
result.setResultCallback(new ResultCallback<LocationSettingsResult>() {
@Override
public void onResult(LocationSettingsResult locationSettingsResult) {
final Status status = locationSettingsResult.getStatus();

switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
// All location settings are satisfied. The client can initialize location
// requests here.

break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
// Location settings are not satisfied. But could be fixed by showing the user
// a optionsDialog.
try {
// Show the optionsDialog by calling startResolutionForResult(),
// and check the result in onActivityResult().
if (status.hasResolution()) {
status.startResolutionForResult(getActivity(), 1000);
}
} catch (IntentSender.SendIntentException e) {
// Ignore the error.
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
// Location settings are not satisfied. However, we have no way to fix the
// settings so we won't show the optionsDialog.
break;
}
}
});
}
}

startResolutionForResult() This function shows the dialog for enabling GPS without going to the Location Settings

1000 是 REQUEST_CODE

并在 onActivity Result 中检索位置

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if ((resultCode == Activity.RESULT_OK) && (requestCode == 1000)) {
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(client);
Log.e("location", mLastLocation.getLatitude() + ":" + mLastLocation.getLongitude());
}
}

关于android - 使用对话框启用 GPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33295610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com