2013-01-15 39 views
5

मैं एक एप्लिकेशन विकसित करना चाहता हूं जिसमें, यदि मैं ऐप खोलूं, तो यह मेरे डिवाइस का वर्तमान स्थान दिखाएगा। मैं जीपीएस का उपयोग किये बिना इसे करना चाहता हूं। मैंने इसके लिए एक कोड लिखा है। लेकिन यह मानचित्र खोलते समय संयुक्त राज्य अमेरिका का स्थान दिखाएगा। मैं चाहता हूं कि यह मेरा वर्तमान स्थान दिखाए (यानी पुणे, भारत)। मैं अपना अनुमानित सही स्थान कैसे प्राप्त करूं?जीपीएस के बिना एंड्रॉइड में वर्तमान स्थिति का पता लगाने

यहाँ का पता लगाने की मेरी कोड

protected void onCreate(Bundle arg0) { 
    // TODO Auto-generated method stub 
    super.onCreate(arg0); 
    setContentView(R.layout.main); 

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

     LocationListener locListener = new LocationListener(){ 
      public void onLocationChanged(Location loc) 
      { 

      loc.getLatitude(); 
      loc.getLongitude(); 

      String Text = "My current location is: " + 
      "Latitud = " + loc.getLatitude() + 
      "Longitud = " + loc.getLongitude(); 

      Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT).show(); 
      } 
+0

मैंने जोड़ा है मैनिफेस्ट फ़ाइल में इंटरनेट, मोटे और ठीक स्थान जैसी सभी आवश्यक अनुमतियां – PrasadM

उत्तर

3

आप का अनुरोध करना चाहिए 'mlocManager' है, और उसके श्रोता सेट:

public void getCurrentLocation() 
{ 
    if (mlocManager != null) { 
     mlocManager .requestLocationUpdates(
       LocationManager.NETWORK_PROVIDER, 0, 0, locListener); 
     mlocManager .requestLocationUpdates(
       LocationManager.GPS_PROVIDER, 0, 0, locListener); 
    } 

} 
0

मैं LocationListener उपयोगी होने के लिए नहीं मिला है, लेकिन शून्य पॉइंटर्स को रोकने के लिए इसे किसी भी तरह से रखने की आवश्यकता है।

// Set the criteria of what to look for 
criteria = new Criteria(); 
criteria.setAccuracy(Criteria.ACCURACY_FINE); 
criteria.setPowerRequirement(Criteria.POWER_LOW); 

// This will find the location of the device via your network, but give user option to use GPS if needed 
String locationprovider = mlocManager.getBestProvider(criteria, 
      true); 

mLoc = mlocManager.getLastKnownLocation(locationprovider); 
if (mLocation != null) 
{ 
    String Text = "My current location is: " + 
    "Latitud = " + mLoc.getLatitude() + 
    "Longitud = " + mLoc.getLongitude(); 
} else 
{ 
    String Text = "No location found." 
} 
9

यहाँ जीपीएस के बिना वर्तमान स्थान प्राप्त करने के लिए, नेटवर्क प्रदाता का उपयोग करना

public class MyLocationListener extends Service implements LocationListener { 

    private static final String TAG = "MyLocationListener"; 

    private Context context = null; 
    private Location location = null; 
    private LocationManager locationManager = null; 

    boolean isNetworkEnabled = false; 
    boolean canGetLocation = false; 

    public double latitude = 0.0; 
    public double longitude = 0.0; 

    // The minimum distance to change Updates in meters 
    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; 
    // The minimum time between updates in milliseconds 
    private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute 

    public MyLocationListener(Context ctx) { 
     Log.v(TAG + ".MyLocationListener", 
       "MyLocationListener constructor called"); 
     this.context = ctx; 
     getLocationValue(); 
    } 

    public Location getLocationValue() { 
     Log.v(TAG + ".getLocationValue", "getLocationValue method called"); 

     try { 
      locationManager = (LocationManager) context 
        .getSystemService(LOCATION_SERVICE); 

      isNetworkEnabled = locationManager 
        .isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

      if (isNetworkEnabled) { 

       // Toast.makeText(context, "Net", 1).show(); 
       Log.v(TAG + ".getLocationValue", "Network provider enabled"); 
       locationManager.requestLocationUpdates(
         LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, 
         MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 

       if (locationManager != null) { 
        location = locationManager 
          .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
        if (location != null) { 
         latitude = location.getLatitude(); 
         longitude = location.getLongitude(); 
         Log.v(TAG, "Co-ordinates are: " + latitude + " "+ longitude); 

        } 
       } 

      } else { 
       showSettingsAlert(); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return location; 
    } 

    /** 
    * Stop using GPS listener Calling this function will stop using GPS in your 
    * app 
    * */ 
    public void stopUsingGPS() { 
     if (locationManager != null) { 
      locationManager.removeUpdates(MyLocationListener.this); 
     } 
    } 

    public double getLatitude() { 
     if (location != null) { 
      latitude = location.getLatitude(); 
     } 
     return latitude; 
    } 

    public double getLongitude() { 
     if (location != null) { 
      longitude = location.getLongitude(); 
     } 
     return longitude; 
    } 

    /** 
    * Function to check GPS/wifi enabled 
    * 
    * @return boolean 
    * */ 
    public boolean canGetLocation() { 
     return this.canGetLocation; 
    } 

    /** 
    * Function to show settings alert dialog On pressing Settings button will 
    * lauch Settings Options 
    * */ 
    public void showSettingsAlert() { 
     AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); 

     alertDialog.setTitle("GPS Settings"); 
     alertDialog 
       .setMessage("GPS is not enabled. Do you want to go to settings menu?"); 

     alertDialog.setPositiveButton("Settings", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         Intent intent = new Intent(
           Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
         context.startActivity(intent); 
        } 
       }); 
     alertDialog.setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.cancel(); 
        } 
       }); 
     alertDialog.show(); 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

} 

बस कोड ऊपर फोन जब भी आप वर्तमान स्थान समन्वय इस तरह की जरूरत है MyLocation श्रोता है

MyLocationListener mylistner = new MyLocationListener(context); 
     double lat = mylistner.latitude; 
     double lon = mylistner.longitude; 

उम्मीद है कि यह आपकी मदद करेगा

+0

यह जीपीएस सक्षम किए बिना 'सेटिंग्सअर्ट' को पॉप अप करेगा! – zionpi

+0

यहां सेवा कक्षा का उपयोग क्या है? – Alvi