14

Android दस्तावेज़ के अनुसार का उपयोग कर सक्रिय करता है, तो:एंड्रॉयड: चेक स्थान सेवाएं Fused स्थान प्रदाता

लिए Google स्थान सेवाओं एपीआई, गूगल का हिस्सा Play सेवाओं, एक अधिक शक्तिशाली, उच्च स्तरीय रूपरेखा है कि स्वचालित रूप से प्रदान करता है android.location में प्लेटफ़ॉर्म स्थान एपीआई से स्थान प्रदाता, उपयोगकर्ता आंदोलन और स्थान सटीकता को संभालता है।

लेकिन (Play सेवाएं आपको Google में स्थान API से) जुड़े हुए स्थान प्रदाता का उपयोग कर रहा है, तो उपयोगकर्ता स्थान सक्षम या अक्षम है जांच करने का तरीका पता नहीं है।

का उपयोग करते हुए वर्षandroid.location यह आसान था:

locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

लेकिन मैं नहीं है का उपयोग करने के दोनों Google Play स्थान और प्रदाता वर्ष android स्थान जुड़े हुए सेवा करना चाहते हैं।

मैं कैसे जांच सकता हूं कि उपयोगकर्ता द्वारा स्थानांतरित स्थान प्रदाता का उपयोग कर स्थान सक्षम किया गया है या नहीं?

अग्रिम धन्यवाद।

+0

हाय क्या आप अपना कार्यान्वयन उत्तर के रूप में पोस्ट कर सकते हैं? –

उत्तर

17

SettingsApi देखें: अपना स्थान अनुरोध जांचें, फिर सुनिश्चित करें कि डिवाइस की सिस्टम सेटिंग्स ऐप की स्थान आवश्यकताओं के लिए ठीक से कॉन्फ़िगर की गई हैं।

+0

मैंने सेटिंग्स क्लाइंट को यहां कार्यान्वित किया है: https: //github.com/askfortricks/FusedLocationProviderClient सेटिंग्स एपीआई के रूप में अब बहिष्कृत है। –

35

This android developer training tutorial could help - यहाँ मूल बातें है:

// Create an instance of GoogleAPIClient. 
    if (mGoogleApiClient == null) { 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(LocationServices.API) 
       .build(); 
    } 

    mGoogleApiClient.connect(); 

    LocationRequest mLocationRequest = new LocationRequest(); 
    mLocationRequest.setInterval(10000); 
    mLocationRequest.setFastestInterval(5000); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 

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

    PendingResult<LocationSettingsResult> result = 
      LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build()); 

    result.setResultCallback(new ResultCallback<LocationSettingsResult>() { 
     @Override 
     public void onResult(LocationSettingsResult locationSettingsResult) { 

      final Status status = locationSettingsResult.getStatus(); 
      final LocationSettingsStates LS_state = locationSettingsResult.getLocationSettingsStates(); 
      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 dialog. 
        try { 
         // Show the dialog by calling startResolutionForResult(), 
         // and check the result in onActivityResult(). 
         status.startResolutionForResult(LocationByGPS.this, REQUEST_CHECK_SETTINGS); 

        } 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 dialog. 

        break; 
      } 
     } 
    }); 

अवहेलना इस विधि::

कोड आपके गतिविधि OnCreate() में चलाने के लिए

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    final LocationSettingsStates states = LocationSettingsStates.fromIntent(data); 
    switch (requestCode) { 
     case REQUEST_CHECK_SETTINGS: 
      switch (resultCode) { 
       case Activity.RESULT_OK: 
        // All required changes were successfully made 
        GetUserLocation();//FINALLY YOUR OWN METHOD TO GET YOUR USER LOCATION HERE 
        break; 
       case Activity.RESULT_CANCELED: 
        // The user was asked to change settings, but chose not to 

        break; 
       default: 
        break; 
      } 
      break; 
    } 
} 

लागू करना न भूलें ये आपकी कक्षा में:

public class MyClass extends AppCompatActivity implements 
    ActivityCompat.OnRequestPermissionsResultCallback, 
    GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener{ 

    protected static final int REQUEST_CHECK_SETTINGS = 0x1; 


    /* 
    your code i.e. with the above code etc.... 
*/ 

} 

Good explanation here in this Google developer link.

चीयर्स!

+0

मैंने कोड और एक और उपयोगी लिंक जोड़कर अपना जवाब संपादित किया है। –

+0

अच्छा लगता है - मैंने कुछ साफ-सफाई की है और आपके लिंक को ठीक किया है, लेकिन अन्यथा यह एक ठोस जवाब है। सलाह लेने के लिए धन्यवाद, और शुभकामनाएँ! – Mogsdad

+0

स्थान ByGPS.this कहां है? –

संबंधित मुद्दे