コード例 #1
0
		protected void BuildLocationSettingsRequest ()
		{
			LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder ();
			builder.AddLocationRequest (mLocationRequest);
			mLocationSettingsRequest = builder.Build ();
		}
コード例 #2
0
 private void BuildGoogleLocationSettingsRequest()
 {
     LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
     builder.AddLocationRequest(_googleLocationRequest);
     _googleLocationSettingsRequest = builder.Build();
 }
コード例 #3
0
 protected void BuildLocationSettingsRequest()
 {
     LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
     builder.AddLocationRequest(mLocationRequest);
     mLocationSettingsRequest = builder.Build();
 }
コード例 #4
0
        private async void OnClickRequestLocationUpdates(object sender, EventArgs eventArgs)
        {
            string Tag = "RequestLocationUpdates";

            LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
            builder.AddLocationRequest(locationRequest);
            LocationSettingsRequest request = builder.Build();
            //Before requesting location update, invoke CheckLocationSettings to check device settings.
            var locationSettingsResponseTask = settingsClient.CheckLocationSettingsAsync(request);

            try
            {
                await locationSettingsResponseTask;
                if (locationSettingsResponseTask.IsCompleted && locationSettingsResponseTask != null)
                {
                    LocationSettingsResponse response = locationSettingsResponseTask.Result;
                    var requestLocationUpdatesTask    = fusedLocationProviderClient.RequestLocationUpdatesAsync(locationRequest, GetPendingIntent());
                    try
                    {
                        await requestLocationUpdatesTask;
                        if (requestLocationUpdatesTask.IsCompleted)
                        {
                            log.Info(Tag, "RequestLocationUpdates with intent succeeded.");
                        }
                        else
                        {
                            log.Error(Tag, $"RequestLocationUpdates with intent failed: {requestLocationUpdatesTask.Exception.Message}");
                        }
                    }
                    catch (Exception e)
                    {
                        if (e is ApiException apiException)
                        {
                            if (apiException.StatusCode == 10803)
                            {
                                //PermissionDenied
                                Utils.RequestLocationPermission(this);
                            }
                        }
                        else
                        {
                            log.Error(Tag, $"RequestLocationUpdates with intent exception: {e.Message}");
                        }
                    }
                }
                else
                {
                    var exception = locationSettingsResponseTask.Exception;
                    log.Error(Tag, $"CheckLocationSetting Failed: {exception.Message}");
                }
            }
            catch (Exception e)
            {
                if (e is ApiException apiException)
                {
                    log.Error(Tag, $"CheckLocationSetting Failed. ErrorMessage: {apiException.Message} ErrorCode: {apiException.StatusCode}");

                    int statuesCode = apiException.StatusCode;
                    if (statuesCode == LocationSettingsStatusCodes.ResolutionRequired)
                    {
                        try
                        {
                            //When the startResolutionForResult is invoked, a dialog box is displayed, asking you to open the corresponding permission.
                            ResolvableApiException resolvableApiException = (ResolvableApiException)e;
                            resolvableApiException.StartResolutionForResult(this, 0);
                        }
                        catch (IntentSender.SendIntentException sendIntentException)
                        {
                            log.Error(Tag, "PendingIntent unable to execute request.");
                        }
                    }
                }
                else
                {
                    log.Error(Tag, $"CheckLocationSetting Failed: {e.Message}");
                }
            }
        }
コード例 #5
0
 public Task <LocationSettingsResponse> CheckLocationSettingsAsync(LocationSettingsRequest locationSettings)
 {
     return(CheckLocationSettings(locationSettings).AsAsync <LocationSettingsResponse>());
 }
コード例 #6
0
 public static async Task <LocationSettingsResult> CheckLocationSettingsAsync(this ISettingsApi api, GoogleApiClient client, LocationSettingsRequest request)
 {
     return((await api.CheckLocationSettings(client, request)).JavaCast <Android.Gms.Location.LocationSettingsResult> ());
 }