2011-01-20 8 views
8

मैं एंड्रॉयड एमुलेटर पर जीपीएस का उपयोग करने के tring हूँ, मैं निम्नलिखित कोड गए एमुलेटर पर जीपीएस स्थान प्राप्त करने में असमर्थ प्रकट:एंड्रॉयड

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

और मैं डी डी एम एस विधि के साथ जीपीएस स्थान निर्धारित किया है और या तो भू ठीक विधि के साथ है, लेकिन जब मैं कोड चलाने के लिए, मैं टोस्ट लाइन पर एक NullPointerExeption मिलता है, शायद कारण loc रिक्त है ।

मुझे समझ में नहीं आता कि त्रुटि कहां है ... क्या आप कृपया मेरी मदद कर सकते हैं?


अद्यतन!

आपकी मदद के लिए धन्यवाद, अब मैं निम्नलिखित कोड का उपयोग करता हूं और मुझे कोई त्रुटि नहीं मिलती है, लेकिन यह चेंजलोकेशन पर कोड नहीं चलाती है ... यह टोस्ट नहीं चलाती है और किसी को वापस नहीं करती लॉग में संदेश!

public class NL extends Activity { 

     private LocationManager locmgr = null; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.nl); 

      locmgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

     // Define a listener that responds to location updates 
      LocationListener locationListener = new LocationListener() { 
       public void onLocationChanged(Location loc) { 
        // Called when a new location is found by the network location provider. 
        Log.i("NOTIFICATION","onLocationChenged Triggered"); 

        Toast msg = Toast.makeText(NetworkLocator.this, "Lon: " + Double.toString(loc.getLongitude()) + " Lat: " + Double.toString(loc.getLatitude()), Toast.LENGTH_SHORT); 
        msg.show(); 
       } 

       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 
      locmgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 
     } 
    } 

धन्यवाद!

+2

आपको यह सत्यापित किया था * locmgr.getBestProvider * वास्तव में "जीपीएस" रिटर्न? वैसे भी, आपको निश्चित रूप से * LocationListener * को कार्यान्वित करना चाहिए और इसे *ManLotePrider वापसी "gps" के साथ * requestLocationUpdates() * –

+0

के साथ स्थान प्रबंधक पर पास करना चाहिए। क्या मैं एक स्थानसूचीकर्ता को जोड़ना चाहता हूं भले ही मैं locatio को lastKnownLocation के साथ प्राप्त करने का प्रयास करता हूं? आपकी मदद के लिए धन्यवाद –

+0

@ मार्को Faion कृपया अपने उत्तरों को अद्यतन रखें ... मैंने पहले से ही आपको जवाब दिया है और आपने उत्तर पर कोई प्रतिक्रिया नहीं दी है! > 'http: // stackoverflow.com/प्रश्न/4591765/एंड्रॉइड-स्क्लाइट-डेटाबेस-विधि-अपरिभाषित-फॉट-टाइप/45 9 1843 # 45 91843' – Beasly

उत्तर

7

समाधान नहीं मिला।

सुधार: LocationManager.GPS_PROVIDER

+1

मेरे अनुभव में जब प्रदाता NETWORK_PROVIDER पर सेट होता है तो एम्यूलेटर डीडीएमएस के माध्यम से भेजे गए स्थान परिवर्तनों का जवाब नहीं देता है, लेकिन जब यह सेट हो जाएगा GPS_PROVIDER जैसा आपने नोट किया है। यह अल की तरह दिखता है मेरे लिए एम्यूलेटर में अनुकरण, या कम से कम एक व्यवहार जो यह स्पष्ट नहीं है। – Mick

1

अगर सब तुम क्या आप वर्णित शायद से किया जाता है आप नहीं शायद नहीं उर जीपीएस पर emulator.go में स्थापित करने के लिए है रहे हैं: -> स्थान और सुरक्षा: -> और जीपीएस उपग्रहों का उपयोग जाँच की जानी चाहिए


संपादित: ithink आपको मानदंड प्रकार के बिना स्थान प्रबंधक का उपयोग करना होगा।



LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 

loc=mlocManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

------ से लंबे समय से प्राप्त करने की कोशिश। और लेट

+0

"जीपीएस उपग्रहों का उपयोग करें" चेक किया गया है –

0

क्या आप सुनिश्चित हैं कि आपका नकली डिवाइस वास्तव में जीपीएस का समर्थन कर रहा है? मुझे लगता है कि इस के लिए एक अतिरिक्त विकल्प नहीं था ...

यह भी मदद मिल सकती है:

धन्यवाद! सभी के लिए: आप ग्रहण में किसी भी समय अपनी परियोजना के लिए बिल्ड लक्ष्य बदल सकते हैं: पैकेज एक्सप्लोरर में प्रोजेक्ट पर राइट-क्लिक करें, गुण> एंड्रॉइड का चयन करें और फिर परियोजना लक्ष्य के लिए 'Google API' देखें। - गैर-अंग्रेजी संस्कृति सेटिंग्स के साथ काम करने वाले डेवलपर्स नोटिस कर सकते हैं कि स्थान नियंत्रण में भेजें बटन दबाकर एंड्रॉइड एमुलेटर में कोई नया स्थान नहीं भेजा जाता है। यह एसडीके उपकरणों की आगामी रिलीज 7 के साथ तय है; एक त्वरित सुधार के लिए आप अपने लोकेल को 'एन' में बदल सकते हैं। (विवरण के लिए code.google.com/p/android/issues/detail?id=915 देखें।) - पैट्रिक डी Kleijn

स्रोत: GPS on emulator doesn't get the geo fix - Android

8

एम्यूलेटर बस पर किसी भी स्थान नहीं है इसकी शुरुआत हुई। doc के अनुसार, 'getLastKnownLocation' विधि शून्य वापस कर सकती है, तो यह ठीक है। उस स्थिति में आपको स्थान अपडेट की प्रतीक्षा करनी चाहिए (आप स्थान प्रबंधक से स्थान अनुरोध स्थान अपडेट कर सकते हैं)।आप निम्न आदेश द्वारा एमुलेटर के जीपीएस मॉड्यूल पर स्थान अपडेट लागू करने के कर सकते हैं:

LocationManager.NETWORK_PROVIDER गलत है:

adb -e emu geo fix 50 50