मुझे कैसे पता चलेगा कि एंड्रॉइड डिवाइस का जीपीएस सक्षम है या नहीं


जवाबों:


456

सबसे अच्छा तरीका निम्नलिखित लगता है:

 final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );

    if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
        buildAlertMessageNoGps();
    }

  private void buildAlertMessageNoGps() {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                   startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                    dialog.cancel();
               }
           });
    final AlertDialog alert = builder.create();
    alert.show();
}

1
मुख्य रूप से यह GPS कॉन्फिगरेशन देखने के लिए इरादा करने के बारे में है। विवरण के लिए github.com/marcust/HHPT/blob/master/src/org/thiesen/hhpt/ui/… देखें।
मार्कस

3
कोड का अच्छा स्निपेट। मैंने @SuppressWarnings को हटा दिया है और मुझे कोई चेतावनी नहीं मिल रही है ... शायद वे अनावश्यक हैं?
अवधि

30
मैं alertआपको पूरी गतिविधि के लिए घोषणा करने की सलाह दूंगा ताकि आप मेमोरी लीक से बचने के लिए इसे ऑनस्टेस्ट्रॉय में खारिज कर सकें ( if(alert != null) { alert.dismiss(); })
कैमरन

तो क्या होगा अगर मैं बैटरी सेविंग पर हूं, क्या यह अभी भी काम करेगा?
प्रखर मोहन श्रीवास्तव

3
@PrakharMohanSrivastava अगर आपकी लोकेशन सेटिंग पॉवर-सेविंग पर हैं, तो यह गलत LocationManager.NETWORK_PROVIDERहो जाएगी , लेकिन यह सच हो जाएगी
Tim

129

Android में, हम आसानी से जांच सकते हैं कि GPS डिवाइस में सक्षम है या नहीं, LocationManager का उपयोग कर रहा है।

यहाँ पर चेक करने का एक सरल प्रोग्राम है।

GPS सक्षम या नहीं: - एक्सेस लोकेशन के लिए AndroidManifest.xml में नीचे की उपयोगकर्ता अनुमति लाइन जोड़ें

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

आपकी जावा क्लास फाइल होनी चाहिए

public class ExampleApp extends Activity {
    /** Called when the activity is first created. */
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
            Toast.makeText(this, "GPS is Enabled in your devide", Toast.LENGTH_SHORT).show();
        }else{
            showGPSDisabledAlertToUser();
        }
    }

    private void showGPSDisabledAlertToUser(){
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setMessage("GPS is disabled in your device. Would you like to enable it?")
        .setCancelable(false)
        .setPositiveButton("Goto Settings Page To Enable GPS",
                new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int id){
                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();
    }
}

आउटपुट जैसा दिखेगा

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


1
जब मैं आपके फ़ंक्शन को आज़माता हूं तो कुछ भी नहीं होता है। हालांकि मुझे इसका परीक्षण करने पर कोई त्रुटि नहीं मिली।
एयरिकर

मैं इसे काम कर रहा हूँ! :) बहुत धन्यवाद, लेकिन मैं तब तक वोट नहीं कर सकता जब तक कि आपने अपना जवाब संपादित नहीं किया: /
Airikr

3
कोई बात नहीं @Erik Edgren आप समाधान प्राप्त करें ताकि im खुश आनंद लें ... !!

@ user647826: बहुत बढ़िया! अच्छी तरह से काम करता है। आपने मेरी रात बचाई
Addi

1
सलाह का एक टुकड़ा: alertपूरी गतिविधि के लिए घोषित करें ताकि आप onDestroy()मेमोरी रिसाव से बचने के लिए इसे खारिज कर सकें ( if(alert != null) { alert.dismiss(); })
naXa

38

हां GPS सेटिंग को प्रोग्रामिक रूप से नहीं बदला जा सकता है क्योंकि वे गोपनीयता सेटिंग्स हैं और हमें यह जांचना होगा कि क्या वे प्रोग्राम से स्विच किए गए हैं या नहीं और अगर वे स्विच नहीं हैं तो इसे संभाल लें। आप उपयोगकर्ता को सूचित कर सकते हैं कि GPS बंद है और यदि आप चाहें तो उपयोगकर्ता को सेटिंग स्क्रीन दिखाने के लिए कुछ इस तरह का उपयोग करें।

जांचें कि स्थान प्रदाता उपलब्ध हैं या नहीं

    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
    if(provider != null){
        Log.v(TAG, " Location providers: "+provider);
        //Start searching for location and update the location text when update available
        startFetchingLocation();
    }else{
        // Notify users and show settings if they want to enable GPS
    }

यदि उपयोगकर्ता GPS को सक्षम करना चाहता है तो आप सेटिंग स्क्रीन को इस तरह दिखा सकते हैं।

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, REQUEST_CODE);

और आपके onActivityResult में आप देख सकते हैं कि उपयोगकर्ता ने इसे सक्षम किया है या नहीं

    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(requestCode == REQUEST_CODE && resultCode == 0){
            String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
            if(provider != null){
                Log.v(TAG, " Location providers: "+provider);
                //Start searching for location and update the location text when update available. 
// Do whatever you want
                startFetchingLocation();
            }else{
                //Users did not switch on the GPS
            }
        }
    }

इसे करने का एक तरीका है और मुझे आशा है कि यह मदद करता है। अगर मैं कुछ गलत कर रहा हूं तो मुझे बताएं।


2
नमस्ते, मैं एक ऐसी ही समस्या है ... क्या आप संक्षेप में बता सकते हैं, "REQUEST_CODE" क्या है और इसके लिए क्या है?
poeschlorn

2
@poeschlorn अन्ना ने नीचे दिए गए लिंक पर पोस्ट किया है। सरल शब्दों में, RequestCode आपको startActivityForResultकई इरादों के साथ उपयोग करने की अनुमति देता है । जब इरादे आपकी गतिविधि पर लौटते हैं, तो आप रिक्वेस्टकोड को यह देखने के लिए चेक करते हैं कि कौन सा इरादा वापस आ रहा है और उसी के अनुसार प्रतिक्रिया दें।
फर्रे

2
providerकोई रिक्त स्ट्रिंग हो सकता है। मुझे चेक को बदलना था(provider != null && !provider.isEmpty())
पवन

जैसा कि प्रदाता "" हो सकता है, int मोड = Settings.Secure.getInt (getContentResolver (), Settings.Secure.LOCATION_MODE) का उपयोग करने पर विचार करें; यदि मोड = 0 जीपीएस बंद है
लेवॉन पेट्रोसेन

31

यहाँ कदम हैं:

चरण 1: पृष्ठभूमि में चल रही सेवाएं बनाएं।

चरण 2: आपको मेनिफेस्ट फ़ाइल में भी निम्नलिखित अनुमति की आवश्यकता है:

android.permission.ACCESS_FINE_LOCATION

चरण 3: कोड लिखें:

 final LocationManager manager = (LocationManager)context.getSystemService    (Context.LOCATION_SERVICE );

if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) )
  Toast.makeText(context, "GPS is disabled!", Toast.LENGTH_LONG).show(); 
else
  Toast.makeText(context, "GPS is enabled!", Toast.LENGTH_LONG).show();

चरण 4: या बस आप का उपयोग करके देख सकते हैं:

LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);

चरण 5: कनेक्शन की निगरानी के लिए अपनी सेवाओं को लगातार चलाएं।


5
यह बताता है कि बंद होने पर भी GPS सक्षम है।
इवान वी।

15

हाँ आप नीचे देख सकते हैं कोड है:

public boolean isGPSEnabled (Context mContext){
    LocationManager locationManager = (LocationManager)
                mContext.getSystemService(Context.LOCATION_SERVICE);
    return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}

9

यह विधि स्थान प्रबंधक सेवा का उपयोग करेगी ।

स्रोत लिंक

//Check GPS Status true/false
public static boolean checkGPSStatus(Context context){
    LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE );
    boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    return statusOfGPS;
};

6

यदि उपयोगकर्ता ने अपनी सेटिंग्स में इसका उपयोग करने की अनुमति दी है तो जीपीएस का उपयोग किया जाएगा।

आप स्पष्ट रूप से इस पर स्विच नहीं कर सकते हैं, लेकिन आपके पास नहीं है - यह वास्तव में एक गोपनीयता सेटिंग है, इसलिए आप इसे मोड़ना नहीं चाहते हैं। यदि उपयोगकर्ता सटीक सह-निर्देश वाले ऐप्स के साथ ठीक है, तो यह चालू होगा। फिर लोकेशन मैनेजर एपीआई जीपीएस का उपयोग करेगा यदि वह कर सकता है।

यदि आपका ऐप जीपीएस के बिना वास्तव में उपयोगी नहीं है, और यह बंद है, तो आप एक इरादे का उपयोग करके सही स्क्रीन पर सेटिंग्स ऐप खोल सकते हैं ताकि उपयोगकर्ता इसे सक्षम कर सके।


6

यह कोड कोड GPS स्टेटस की जाँच करता है

final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
    buildAlertMessageNoGps();
}

`


3

अपने में LocationListener, कार्यान्वयन onProviderEnabledऔर onProviderDisabledघटना संचालकों। जब आप फोन करते हैं requestLocationUpdates(...), अगर फोन पर जीपीएस अक्षम है, तो कॉल onProviderDisabledकिया जाएगा; यदि उपयोगकर्ता GPS सक्षम करता है, onProviderEnabledतो उसे कॉल किया जाएगा।


2
In Kotlin: - How to check GPS is enable or not

 val manager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
        if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            checkGPSEnable()

        } 


 private fun checkGPSEnable() {
        val dialogBuilder = AlertDialog.Builder(this)
        dialogBuilder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
                .setCancelable(false)
                .setPositiveButton("Yes", DialogInterface.OnClickListener { dialog, id
                    ->
                    startActivity(Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS))
                })
                .setNegativeButton("No", DialogInterface.OnClickListener { dialog, id ->
                    dialog.cancel()
                })
        val alert = dialogBuilder.create()
        alert.show()
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.