برای دسترسی به موقعیت مکانی کاربر با استفاده از GPS گوشی موبایل، از کلاس LocationManager استفاده کنید. این کلاس به شما امکان میدهد که به موقعیت مکانی کاربر دسترسی داشته باشید.
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Location loc = locationManager.getLastKnownLocation( LocationManager.GPS_PROVIDER); if (loc == null) { // fall back to network if GPS is not available loc = locationManager.getLastKnownLocation( LocationManager.NETWORK_PROVIDER); } if (loc != null) { double myLat = loc.getLatitude(); double myLng = loc.getLongitude(); ... // other methods: getAltitude, getSpeed, getBearing,… }
برای اینکه به موقعیت مکانی کاربر دسترسی داشته باشید باید در AndroidManifest.xml درخواست مجوز دسترسی (Permission) بدهید
<manifest ...> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <application ...> ... </application> </manifest>
برای یافتن موقیعت مکانی شبیه ساز کافیست موارد زیر را دنبال کنید
Android Device Monitor → Emulator Controls → Location
در دستگاه به تنظیمات بروید و موقعیت مکانی را روشن کنید.
روش دیگری که وجود دارد این است که ترمینال را باز کنید و کد زیر را در آن وارد نمایید
telnet localhost 5554
سپس اگر دیوایسی متصل بود این کد را بزنید
geo fix latitude longitude altitude
آگاهی از تغییر مکان کاربر
برای آگاهی از تغییر مکان کاربر میتوانید به روش زیر عمل کنید:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, // provider, min time/distance new LocationListener() { public void onLocationChanged(Location location) { // code to run when user's location changes } public void onStatusChanged(String prov, int stat, Bundle b){} public void onProviderEnabled(String provider) {} public void onProviderDisabled(String provider) {} } );