क्या जीपीएस या इंटरनेट का उपयोग किए बिना उपयोगकर्ता का वर्तमान स्थान प्राप्त करना संभव है? मेरा मतलब मोबाइल नेटवर्क प्रोवाइडर की मदद से है।
क्या जीपीएस या इंटरनेट का उपयोग किए बिना उपयोगकर्ता का वर्तमान स्थान प्राप्त करना संभव है? मेरा मतलब मोबाइल नेटवर्क प्रोवाइडर की मदद से है।
जवाबों:
आप जो करना चाह रहे हैं वह LocationManager.NETWORK_PROVIDER
करने के बजाय स्थिति का उपयोग करें LocationManager.GPS_PROVIDER
। NETWORK_PROVIDER
जीएसएम या वाईफ़ाई पर इच्छा संकल्प है, जो कभी भी उपलब्ध है। जाहिर है कि वाईफ़ाई बंद करने के साथ, जीएसएम का उपयोग किया जाएगा। ध्यान रखें कि सेल नेटवर्क का उपयोग करना मूल रूप से 500 मी।
http://developer.android.com/guide/topics/location/obtain-user-location.html के पास वास्तव में बहुत अच्छी जानकारी और नमूना कोड है।
अधिकांश कोड के साथ काम करने के बाद OnCreate()
, इसे जोड़ें:
// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
makeUseOfNewLocation(location);
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
आप अपनी गतिविधि भी LocationListener
कक्षा को लागू कर सकते हैं और इस प्रकार onLocationChanged()
अपनी गतिविधि को लागू कर सकते हैं।
प्राप्त करने से getLastKnownLocation
आप वास्तव में खुद को ठीक नहीं करते हैं।
ध्यान रखें कि यह प्रदाता शुरू कर सकता है , लेकिन यदि उपयोगकर्ता ने पहले कभी कोई स्थान प्राप्त किया है, तो मुझे नहीं लगता कि यह होगा। डॉक्स वास्तव में इस पर बहुत स्पष्ट नहीं हैं।
डॉक्स getLastKnownLocation के अनुसार:
किसी स्थान को दिए गए प्रदाता से प्राप्त अंतिम ज्ञात स्थान फिक्स से डेटा का संकेत देता है। यह प्रदाता को शुरू किए बिना किया जा सकता है।
यहाँ एक त्वरित स्निपेट है:
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import java.util.List;
public class UtilLocation {
public static Location getLastKnownLoaction(boolean enabledProvidersOnly, Context context){
LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Location utilLocation = null;
List<String> providers = manager.getProviders(enabledProvidersOnly);
for(String provider : providers){
utilLocation = manager.getLastKnownLocation(provider);
if(utilLocation != null) return utilLocation;
}
return null;
}
}
आपको नई अनुमति भी देनी होगी AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
PASSIVE_PROVIDER
, NETWORK_PROVIDER
, और GPS_PROVIDER
।
boolean gps_enabled = false;
boolean network_enabled = false;
LocationManager lm = (LocationManager) mCtx
.getSystemService(Context.LOCATION_SERVICE);
gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Location net_loc = null, gps_loc = null, finalLoc = null;
if (gps_enabled)
gps_loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (network_enabled)
net_loc = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (gps_loc != null && net_loc != null) {
//smaller the number more accurate result will
if (gps_loc.getAccuracy() > net_loc.getAccuracy())
finalLoc = net_loc;
else
finalLoc = gps_loc;
// I used this just to get an idea (if both avail, its upto you which you want to take as I've taken location with more accuracy)
} else {
if (gps_loc != null) {
finalLoc = gps_loc;
} else if (net_loc != null) {
finalLoc = net_loc;
}
}
नहीं, आप वर्तमान में GPS या इंटरनेट का उपयोग किए बिना स्थान प्राप्त नहीं कर सकते।
वाईफाई, सेल्युलर या ब्लूटूथ पर आधारित लोकेशन तकनीक एक बड़े डेटाबेस की मदद से काम करती है जिसे लगातार अपडेट किया जा रहा है। एक डिवाइस ट्रांसमीटर आईडी के लिए स्कैन करता है और फिर इंटरनेट , जैसे कि Google, Apple, या Skyhook जैसी सेवा के माध्यम से क्वेरी में भेजता है । यह सेवा ज्ञात स्थानों से पिछले वायरलेस सर्वेक्षणों के आधार पर एक स्थान के साथ प्रतिक्रिया करती है। इंटरनेट एक्सेस के बिना, आपके पास इस तरह के डेटाबेस की एक स्थानीय प्रतिलिपि होनी चाहिए और इसे अद्यतित रखना होगा। वैश्विक उपयोग के लिए, यह बहुत ही अव्यावहारिक है।
सैद्धांतिक रूप से, एक मोबाइल प्रदाता केवल स्थानीय डेटा सेवा प्रदान कर सकता है लेकिन इंटरनेट तक कोई पहुंच नहीं है, और फिर मोबाइल उपकरणों से स्थान प्रश्नों का उत्तर दे सकता है। मोबाइल प्रदाता ऐसा नहीं करते हैं; कोई भी इस तरह के प्रतिबंधित डेटा एक्सेस के लिए भुगतान नहीं करना चाहता है। यदि आपके पास अपने मोबाइल प्रदाता के माध्यम से डेटा सेवा है, तो आपके पास इंटरनेट का उपयोग है।
संक्षेप में, स्थान प्राप्त करने के लिए LocationManager.NETWORK_PROVIDER या android.hardware.location.network का उपयोग करने के लिए इंटरनेट के उपयोग की आवश्यकता होती है।
अंतिम ज्ञात स्थिति का उपयोग करने के लिए आपको जीपीएस या इंटरनेट का उपयोग हाल ही में करना होगा। यदि आपके पास बस इंटरनेट था, तो संभवतः आप फिर से इंटरनेट पाने के लिए अपनी स्थिति या सेटिंग्स को समायोजित कर सकते हैं। यदि आपके डिवाइस में GPS या इंटरनेट नहीं है, तो अंतिम ज्ञात स्थिति सुविधा आपकी मदद नहीं करेगी।
जीपीएस या इंटरनेट के बिना, आप कर सकते हैं:
यहां जीपीएस और नेटवर्क प्रदाता के उपयोग के बिना उपयोगकर्ता वर्तमान स्थान प्राप्त करना संभव है।
1 है। Convert cellLocation to real location (Latitude and Longitude), using "http://www.google.com/glm/mmap"
क्या आपने Google Maps जियोलोकेशन एपी को देखा है? Google मानचित्र जियोलोकेशन
यह सरल रेस्टापी है, आपको बस एक अनुरोध की आवश्यकता है, सेवा मीटर में सटीकता के साथ एक स्थान लौटाएगी।
ऐसा प्रतीत होता है कि जीपीएस का उपयोग किए बिना स्मार्ट फोन को ट्रैक करना संभव है।
सूत्रों का कहना है:
प्राथमिक: "पिनमे: दुनिया भर में एक स्मार्टफ़ोन उपयोगकर्ता पर नज़र रखना"
माध्यमिक: "जीपीएस के बिना एक सेलफोन को कैसे ट्रैक करें- या सहमति"
मुझे अभी तक टीम के अंतिम कोड का लिंक नहीं मिला है। जब मैं करूंगा तो पोस्ट करूंगा, अगर दूसरे ने ऐसा नहीं किया है।