यदि आप बटन पुश पर स्थान कैप्चर करना चाहते हैं, तो यहां आप यह कैसे करेंगे। यदि उपयोगकर्ता के पास स्थान सेवा सक्षम नहीं है, तो यह उन्हें सक्षम करने के लिए सेटिंग मेनू पर भेज देगा।
सबसे पहले, आपको अपने मैनिफेस्ट में "android.permission.ACCESS_COARSE_LOCATION" अनुमति जोड़नी होगी। आप जीपीएस की जरूरत है (नेटवर्क स्थान पर्याप्त संवेदनशील नहीं है), बजाय अनुमति "android.permission.ACCESS_FINE_LOCATION" जोड़ने के लिए, और "Criteria.ACCURACY_FINE"
Button gpsButton = (Button)this.findViewById(R.id.buttonGPSLocation);
gpsButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Start loction service
LocationManager locationManager = (LocationManager)[OUTERCLASS].this.getSystemService(Context.LOCATION_SERVICE);
Criteria locationCritera = new Criteria();
locationCritera.setAccuracy(Criteria.ACCURACY_COARSE);
locationCritera.setAltitudeRequired(false);
locationCritera.setBearingRequired(false);
locationCritera.setCostAllowed(true);
locationCritera.setPowerRequirement(Criteria.NO_REQUIREMENT);
String providerName = locationManager.getBestProvider(locationCritera, true);
if (providerName != null && locationManager.isProviderEnabled(providerName)) {
// Provider is enabled
locationManager.requestLocationUpdates(providerName, 20000, 100, [OUTERCLASS].this.locationListener);
} else {
// Provider not enabled, prompt user to enable it
Toast.makeText([OUTERCLASS].this, R.string.please_turn_on_gps, Toast.LENGTH_LONG).show();
Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
[OUTERCLASS].this.startActivity(myIntent);
}
}
});
मेरे बाहरी कक्षा में "Criteria.ACCURACY_COARSE" बदलने इस श्रोता ने
private final LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
[OUTERCLASS].this.gpsLocationReceived(location);
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
फिर भी, जब भी आप इसे सुनना बंद करना चाहते हैं। आपको कम से कम अपनी गतिविधि की ऑन-स्टॉप विधि के दौरान यह कॉल करना चाहिए।
LocationManager locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
locationManager.removeUpdates(this.locationListener);
getBestProvider पर दूसरा पैरामीटर (locationCritera, true) चेकों जो प्रदाताओं रहे हैं:
अब भी आप जीपीएस और फिर से प्रत्यक्ष उपयोगकर्ता की वर्तमान स्थिति के बारे में जीपीएस चालू करने के लिए के लिए जाँच करने की जरूरत है, इस का उपयोग इसलिए, सिद्धांत रूप में सक्षम, आपको यह जांचने की आवश्यकता नहीं है कि यह फिर से सक्षम है या नहीं। – Eduardo