2011-01-19 18 views
12

मुझे एंड्रॉइड ऐप पर वर्तमान उपयोगकर्ता स्थान प्राप्त करने की आवश्यकता है, इसलिए मैंने वेब पर कुछ ट्यूटोरियल और नमूने पढ़े हैं, लेकिन मुझे लगता है कि सभी उदाहरणों में, स्थान से पुनर्प्राप्त किया गया है एक "ऑनलाक्शन चेंज" जिसका अर्थ है कि हर बार स्थान बदलता है, "ऑनलाक्शन चेंज" में कोड निष्पादित किया जाता है।एंड्रॉइड - केवल एक समय स्थान प्राप्त करें

मुझे ऐप शुरू होने के समय ही उपयोगकर्ता स्थान प्राप्त करने की आवश्यकता है।

आपकी मदद के लिए धन्यवाद!

उत्तर

4

आप इसे स्थान प्रबंधक के साथ कर सकते हैं। getLastKnownLocation

+0

आपके उत्तर के लिए धन्यवाद, आपके लिंक से मुझे लगता है कि मुझे हमेशा एक प्रदाता सेट करने की आवश्यकता है ... क्या यह सही है? क्या मुझे बेहतर प्रदाता मिलना है और इसे GetLastKnownLocation में सेट करना है? –

+0

हां, यही आपको करने की ज़रूरत है। – elevine

1

मुख्य गतिविधि में इस रखो:


boolean bFirst = true; 
function void onCreate(blabla) { 
    if(bFirst) { 
    //Do your stuff to get the location 
    bFirst = false; 
    } 
} 

onResume में एक ही रखो();

+0

यह कोड केवल एक बार निष्पादित करता है, लेकिन स्थिति परीक्षण की लगातार जांच की जाती है –

10

आप नीचे दिए गए कोड का उपयोग कर अंतिम जानकारी स्थान प्राप्त कर सकते हैं। यह पीछे की ओर सरणी पर स्थान प्रदाताओं और loops हो जाता है। i.e जीपीएस के साथ शुरू होता है, अगर कोई जीपीएस नेटवर्क नेटवर्क नहीं मिलता है। जब भी आपको स्थान प्राप्त करने की आवश्यकता हो, आप इस विधि को कॉल कर सकते हैं।

private double[] getGPS() { 
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
List<String> providers = lm.getProviders(true); 

/* Loop over the array backwards, and if you get an accurate location, then break     out the loop*/ 
Location l = null; 

for (int i=providers.size()-1; i>=0; i--) { 
l = lm.getLastKnownLocation(providers.get(i)); 
if (l != null) break; 
} 

double[] gps = new double[2]; 
if (l != null) { 
gps[0] = l.getLatitude(); 
gps[1] = l.getLongitude(); 
} 
return gps; 
} 
+1

मुझे लेट और लंबे दोनों के लिए 0.0 मिल रहा है, कोई विचार क्यों? – Maurice

+0

क्या आप एमुलेटर या वास्तविक डिवाइस पर परीक्षण कर रहे हैं? – Phobos

+0

नहीं, एस 3 और एस 2 –

0

getGPS() तरीका है जिसके फोबोस काम करने के लिए प्रस्तावित ठीक से आप अपने AndroidManifest.xml

कि प्राप्त 0.0

ये पंक्तियां जोड़ें के अपने त्रुटि से छुटकारा मिल जाएगा के भीतर उपयोग की अनुमति के लिए है के लिए:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.LOCATION_HARDWARE" /> 
संबंधित मुद्दे