जवाबों:
सबसे अच्छा तरीका निम्नलिखित लगता है:
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();
}
alert
आपको पूरी गतिविधि के लिए घोषणा करने की सलाह दूंगा ताकि आप मेमोरी लीक से बचने के लिए इसे ऑनस्टेस्ट्रॉय में खारिज कर सकें ( if(alert != null) { alert.dismiss(); }
)
LocationManager.NETWORK_PROVIDER
हो जाएगी , लेकिन यह सच हो जाएगी
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();
}
}
आउटपुट जैसा दिखेगा
alert
पूरी गतिविधि के लिए घोषित करें ताकि आप onDestroy()
मेमोरी रिसाव से बचने के लिए इसे खारिज कर सकें ( if(alert != null) { alert.dismiss(); }
)
हां 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
}
}
}
इसे करने का एक तरीका है और मुझे आशा है कि यह मदद करता है। अगर मैं कुछ गलत कर रहा हूं तो मुझे बताएं।
startActivityForResult
कई इरादों के साथ उपयोग करने की अनुमति देता है । जब इरादे आपकी गतिविधि पर लौटते हैं, तो आप रिक्वेस्टकोड को यह देखने के लिए चेक करते हैं कि कौन सा इरादा वापस आ रहा है और उसी के अनुसार प्रतिक्रिया दें।
provider
कोई रिक्त स्ट्रिंग हो सकता है। मुझे चेक को बदलना था(provider != null && !provider.isEmpty())
यहाँ कदम हैं:
चरण 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: कनेक्शन की निगरानी के लिए अपनी सेवाओं को लगातार चलाएं।
हाँ आप नीचे देख सकते हैं कोड है:
public boolean isGPSEnabled (Context mContext){
LocationManager locationManager = (LocationManager)
mContext.getSystemService(Context.LOCATION_SERVICE);
return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
यह विधि स्थान प्रबंधक सेवा का उपयोग करेगी ।
स्रोत लिंक
//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;
};
यदि उपयोगकर्ता ने अपनी सेटिंग्स में इसका उपयोग करने की अनुमति दी है तो जीपीएस का उपयोग किया जाएगा।
आप स्पष्ट रूप से इस पर स्विच नहीं कर सकते हैं, लेकिन आपके पास नहीं है - यह वास्तव में एक गोपनीयता सेटिंग है, इसलिए आप इसे मोड़ना नहीं चाहते हैं। यदि उपयोगकर्ता सटीक सह-निर्देश वाले ऐप्स के साथ ठीक है, तो यह चालू होगा। फिर लोकेशन मैनेजर एपीआई जीपीएस का उपयोग करेगा यदि वह कर सकता है।
यदि आपका ऐप जीपीएस के बिना वास्तव में उपयोगी नहीं है, और यह बंद है, तो आप एक इरादे का उपयोग करके सही स्क्रीन पर सेटिंग्स ऐप खोल सकते हैं ताकि उपयोगकर्ता इसे सक्षम कर सके।
यह कोड कोड GPS स्टेटस की जाँच करता है
final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
buildAlertMessageNoGps();
}
`
अपने में LocationListener
, कार्यान्वयन onProviderEnabled
और onProviderDisabled
घटना संचालकों। जब आप फोन करते हैं requestLocationUpdates(...)
, अगर फोन पर जीपीएस अक्षम है, तो कॉल onProviderDisabled
किया जाएगा; यदि उपयोगकर्ता GPS सक्षम करता है, onProviderEnabled
तो उसे कॉल किया जाएगा।
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()
}