से सटीक वर्तमान स्थान प्राप्त मैं निम्नलिखित कोड का उपयोग अपने आवेदन में एक नेटवर्क प्रदाता से वर्तमान स्थान प्राप्त करने के लिए:नेटवर्क प्रदाता
LocationManager mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
boolean network_enabled = mgr.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(network_enabled){
Location location = mgr.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
लेकिन यह एक स्थान मेरे वास्तविक स्थान से लगभग 300-700 मीटर की दूरी पर देता है।
यह नेटवर्क प्रदाता से अपेक्षा की जाती है। लेकिन समस्या यह है:
केवल इस नेटवर्क प्रदाता सक्षम के साथ है, और कोई जीपीएस, मैं Foursquare आवेदन जहां यह मेरे वर्तमान स्थान वास्तव में पता चलता है मैं कहाँ हूँ openned। अब जब मैं अपने आवेदन पर वापस आऊंगा, तो यह सटीक वर्तमान स्थान दिखाता है या वही स्थान कहता है जो फोरस्क्वेयर दिखाया गया है।
यही बात नेविगेटर की तरह Google एप्लिकेशन के साथ होता है, नक्शे आदि ..,
यह कैसे किया जा सकता है? नेटवर्क प्रदाता के आधार पर अन्य ऐप्स सटीक स्थान कैसे प्राप्त कर सकते हैं?
पूरा कोड:
public class MyLocationActivity extends Activity implements LocationListener {
private LocationManager mgr;
private String best;
Location location;
public static double myLocationLatitude;
public static double myLocationLongitude;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
best = mgr.getBestProvider(criteria, true);
location = mgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);
dumpLocation(location);
}
public void onLocationChanged(Location location) {
dumpLocation(location);
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
protected void onPause() {
super.onPause();
mgr.removeUpdates(this);
}
@Override
protected void onResume() {
super.onResume();
mgr.requestLocationUpdates(best, 15000, 10, this);
}
private void dumpLocation(Location l) {
if (l != null){
myLocationLatitude = l.getLatitude();
myLocationLongitude = l.getLongitude();
}
}
}
आप
यदि आप एंड्रॉइड 4.2 का उपयोग कर रहे हैं तो एंड्रॉइड के पिछले संस्करणों की तुलना में, यदि आपका ऐप ACCESS_COARSE_LOCATION अनुमति का अनुरोध करता है तो उपयोगकर्ता स्थान के परिणाम कम सटीक हो सकते हैं लेकिन ACCESS_FINE_LOCATION अनुमति का अनुरोध नहीं करते हैं। जब आपकी ऐप मोटे स्थान (और ठीक स्थान नहीं) के लिए अनुमति का अनुरोध करती है तो उपयोगकर्ताओं की गोपनीयता अपेक्षाओं को पूरा करने के लिए, सिस्टम उपयोगकर्ता स्थान अनुमान प्रदान नहीं करेगा जो कि शहर ब्लॉक से अधिक सटीक है। –
मैंने इसे '4.1.2' पर आज़माया। लेकिन वैसे भी मैं 'ACCESS_COARSE_LOCATION' और' ACCESS_FINE_LOCATION' अनुमति दोनों के लिए पूछ रहा हूं। –
क्या आप अपडेट के बीच समय को कम करने का प्रयास कर सकते हैं? क्या बाद के स्थान पहले लोगों की तुलना में अधिक सटीक भेजे गए हैं? –