2012-11-27 27 views
47
LocationManager locationManager = (LocationManager)getApp().getSystemService(Context.LOCATION_SERVICE); //getApp() returns my Application object 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER , 1, 1, this); 
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1, 1, this); 

यही वह कोड है जिसे मैं सुनने के लिए उपयोग कर रहा हूं। जीपीएस सक्षम के साथ, सब कुछ ठीक काम करता है। हालांकि, अगर मैं जीपीएस अक्षम करता हूं और नेटवर्क स्थान पर भरोसा करता हूं, तो यह मुझे दो साल पहले से इस मामले में, पुराने परिणाम देता है। मैं इसे अद्यतन करने के लिए नहीं मिल सकता है। कॉलिंग getLastKnownLocation समान स्टाइल परिणाम देता है।NETWORK_PROVIDER अद्यतन स्थान प्रदान नहीं कर रहा है

Google मानचित्र अपडेट ठीक है, इसलिए मुझे पता है कि यह हार्डवेयर/सिस्टम कॉन्फ़िगरेशन समस्या नहीं है।

मैंने चारों ओर गुगल किया है, और इसी तरह की समस्याओं वाले कुछ लोगों को मिला है, लेकिन कोई जवाब नहीं है। मैंने अपनी परियोजना को एपीआई लेवल 8 (2.2) के साथ-साथ 15 (4.0.3) को लक्षित करने का प्रयास किया है। वही परिणाम मेरा फोन आईसीएस चला रहा है।

मैंने GPS_PROVIDER के अनुरोध को हटाने का प्रयास किया है, साथ ही getAllProviders() में सब कुछ के लिए अनुरोध भी शामिल है। वही सौदा

कोई विचार क्यों NETWORK_PROVIDER अपडेट नहीं हो रहा है? किसी भी तरह की सहायता का स्वागत किया जाएगा।

(। पुनश्च नहीं, मैं मैं सामान्य रूप से "1, 1" मेरा समय/दूरी पैरामीटर के रूप में उपयोग नहीं करते, मैं बस, जबकि इस डिबगिंग इसे बदल)

संपादित करें: मुझे लगता है कि हाँ, isProviderEnabled उल्लेख करना भूल गया() सच देता है।

+5

मैं एंड्रॉयड 4.1.1 के साथ भी इस सटीक समस्या आई एस 3 पर,: गूगल मैप्स काम जारी NETWORK_PROVIDER के साथ, लेकिन अन्य सभी ऐप्स (मेरे सहित) को कोई अपडेट नहीं मिलता है। ऐप को अनइंस्टॉल करना और पुनर्स्थापित करना मदद नहीं करता है। केवल फोन को रीबूट करना ठीक है, जिसके बाद चीजें अपेक्षित काम करती हैं। –

+0

वही समस्या: http://stackoverflow.com/questions/15747543/locationlistener-of-network-provider-is-enabled-but-onlocationchanged-is-never यदि आपको कुछ नया पता चलता है, तो कृपया मुझे बताएं –

+0

बस अधिक जानकारी मैं अपने नेक्सस एस पर यह व्यवहार भी देख रहा हूं। अब रीबूट करने का प्रयास करने के लिए जा रहा हूं और देखें कि क्या यह ठीक करता है या नहीं। – Peanut

उत्तर

0

मुझे वर्तमान में संदेह है कि यह ऐप शटडाउन या गतिविधि ऑनडस्ट्रॉय पर removeUpdates(listener) का उपयोग न करने के कारण होता है। मैंने इसे लागू करना सुनिश्चित कर लिया है और उम्मीद है कि यह इसे ठीक करेगी। मैं कुछ और नहीं सोच सकता।

--edit-- दुर्भाग्यवश इसे ठीक नहीं किया गया।

+0

पर चल रहा है अरे, क्या आपने कोई सुधार देखा है ?? – Mathias

+0

नहीं, दुर्भाग्यवश ऐप कभी-कभी बग से पीड़ित था। तो यह एक फिक्स नहीं है। – Peterdk

+0

धन्यवाद, ऐसा नहीं लगता है, क्योंकि मुझे यकीन है कि मैं पुस्तक द्वारा सामान करता हूं, और मुझे अभी भी यह मिल रहा है ... :( – Mathias

0

1) सबसे पहले आप जांचते हैं कि आपने ऊपर दी गई अनुमति दी है या नहीं। 2) आपको यह सुनिश्चित करना होगा कि इंटरनेट आपके हैंडसेट में काम कर रहा है। 3) कृपया नीचे दिए गए कोड को खोजें।

public void getLocationByNetworkProvider() 
{  
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 10, new LocationListener() { 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
      // TODO Auto-generated method stub 


     public void onProviderEnabled(String provider) { 
      // TODO Auto-generated method stub 

     } 

     public void onProviderDisabled(String provider) { 
      // TODO Auto-generated method stub 

     } 

     public void onLocationChanged(Location location) { 
     location.getLatitude();        location.getLongitude(); 

     } 
    });  

}` 
+0

प्रतिष्ठा का नकारात्मक चिह्न क्यों? – User10001

+0

शायद कई टाइपो और बार-बार बेकार जानकारी? – felixd

+0

हाय, अगर हैप्रोवाइडर सक्षम() सत्य लौटाता है तो कृपया जांचें कि कौन सा एक प्रदाता चालू है, यह या तो जीपीएस प्रदाता हो सकता है या नेटवर्क प्रदाता हो सकता है। इस तरह से अन्य एप्लिकेशन अपडेट किए गए स्थान दिखाते हैं। जब आप विधि स्थान कॉल करते हैं। मैनेजर.रेक्वेस्ट स्थान अपडेट (स्थान प्रबंधक। GPS_PROVIDER, 1, 1, यह); तो आपको अपने स्थान श्रोता के स्थानान्तरण (स्थान स्थान) पर विधि में अपडेट किया गया स्थान प्राप्त होगा .. – User10001

23

मुझे अंततः इस समस्या को हल करने का एक तरीका मिला (my question here देखें)।

एस 3 गैलेक्सी मिनी पर मेरे मामले में उपरोक्त वर्णित लोगों की तरह समान लक्षण थे (रीबूट तक कोई स्थान अपडेट नहीं ...)। डिवाइस कम बिजली की स्थिति तक पहुंचने पर ज्यादातर मामलों में स्थान अपडेट करना बंद कर दिया, लेकिन कभी-कभी यह तब भी हुआ जब फोन पूरी तरह से चार्ज हो गया था। जाहिर है यह LocationManager में कहीं भी एक समस्या है। मैं स्थानों के लिए नई Google Play Services API (LocationClient कक्षा) का उपयोग कर LocationManager को बाईपास करने में कामयाब रहा।

शायद यही कारण है कि स्थान अपडेट अभी भी Google मानचित्र के साथ काम कर रहे थे, क्योंकि Google मानचित्र सार्वजनिक बनाने से पहले भी Google Play Services API का उपयोग कर रहे थे।

मैं आपको this link का पालन करने की सलाह देता हूं जो आपको LocationManager का उपयोग करने के बजाय प्ले सेवा API का उपयोग करने का तरीका दिखाता है यदि आपको यह समस्या आती है।

मैं Play सेवाओं के साथ स्थान अपडेट चला रहा हूं और अब इस तरह की कोई समस्या नहीं थी - मैं नियमित रूप से नियमित स्थान अपडेट प्राप्त करता रहता हूं।

से सावधान रहें कि इसकी आवश्यकता होगी कि उपयोगकर्ता को अपने डिवाइस पर Google Play इंस्टॉल होना चाहिए, इसलिए किंडल्स और पसंद तस्वीर से बाहर होंगे।इसके लिए न्यूनतम एंड्रॉइड 2.2 की भी आवश्यकता होती है।

+0

मैं इसे अगले कुछ हफ्तों में अपने ऐप में जोड़ने का प्रयास करूंगा और देख सकता हूं कि चीजें कैसे जाती हैं , मुझे भरोसा है ये काम करेगा! – Peanut

+0

यह बिल्कुल समाधान है। मैं इस समस्या के साथ दिनों के लिए संघर्ष किया, और यह तय किया !! धन्यवाद! –

+0

हाँ, किंडल का समर्थन करना मेरी आवश्यकताओं में से एक है। हालांकि जिज्ञासा से, यह कैसे चला गया? – theblang

0

यदि आप नए फोन पर काम कर रहे हैं तो आपको यह जांचना होगा कि आपने Google मानचित्र ऐप में सभी समझौतों को स्वीकार कर लिया है - अन्यथा आपको NETWORK_PROVIDER से कोई अपडेट प्राप्त नहीं होगा।

-2

आप अद्यतन location.Locationlistener स्थान के लिए काम करेंगे के लिए इस तरह उपयोग कर सकते हैं ....

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.widget.TextView; 

import android.util.Log; 

public class MainActivity extends Activity implements LocationListener{ 

protected LocationManager locationManager; 
protected LocationListener locationListener; 
protected Context context; 
TextView txtLat; 
String lat; 
String provider; 
protected String latitude,longitude; 
protected boolean gps_enabled,network_enabled; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

txtLat = (TextView) findViewById(R.id.textview1); 

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
} 

@Override 
public void onLocationChanged(Location location) { 

txtLat = (TextView) findViewById(R.id.textview1); 
txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" +  location.getLongitude()); 

} 

@Override 
public void onProviderDisabled(String provider) { 
Log.d("Latitude","disable"); 
} 

@Override 
public void onProviderEnabled(String provider) { 
Log.d("Latitude","enable"); 
} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
Log.d("Latitude","status"); 
} 


} 
+6

यह मूल रूप से जिस तरह से काम करना चाहिए, यह स्थान अनुरोध करने के लिए मूल कोड है। मुझे यकीन है कि ओपी पहले ही जानता है कि कैसे करना है। – NumberFour

+0

अरे @ तेरैया मयूर, बस आपने प्रदाता को बदल दिया !!! यह उचित उत्तर ब्रो नहीं है। –

संबंधित मुद्दे