- Простой способ добавить геолокацию в свой проект для Android
- How to Get Current Location in Android Using Location Manager
- How to Get Current Location in Android Using Location Manager
- Full Source Code
- You May Also Like:
- 27 thoughts on “How to Get Current Location in Android Using Location Manager”
- Subscribe For Latest Updates
- Get Current Location in Android
- Network Location Provider vs GPS Location Provider
- Steps to get location in Android
- Provide permissions for receiving location update
- Create LocationManager instance as reference to the location service
- Request current location from LocationManager
- Receive location update from LocationListener on change of location
- Sample Android App: Current Location Finder
- Android Output
- How to send latitude and longitude to android emulator
- Popular Articles
- Comments on «Get Current Location in Android»
Простой способ добавить геолокацию в свой проект для Android
Долго я прочёсывал интернет в поисках простого решения, как мне в проект добавить 1 только класс и больше не беспокоиться о проблемах геолокации.
Критерии были такие:
1) решить всё в 1 классе, как можно меньше используя внешний код.
2) у пользователя должна быть всегда под рукой 1 static переменная в которой указанно его местоположение и больше ни о чём он знать не должен.
Большинство постов не отвечало на поставленный вопрос: конечно сначала нужно обратиться к сервису, потом нужно установить listner, потом вы можете посмотреть на трёхстраничный краткий пример как это делать.
В итоге я написал свой класс, с которым и хочу вас познакомить: он прост в использовании и с ним сможет справиться любой: просто добавьте его в проект и будет вам счастье.
Итак, что же здесь есть?
Класс разделен на 3 части:
1) imHere — переменная типа Location, в которой будет всегда доступна самая последняя информация о местоположении пользователя.
2) функция SetUpLocationListener — в любом случае нам нужна будет начальная установка для того, чтобы система начала сама без нашего участия выполнять обновление переменной imHere.
3) все остальные обязательные части LocationListener, которые можно переделать по собственному желанию.
Итак, как это работает?
1) создаем класс MyLocationListener
2) копируем в него код написанный выше
3) в основной функции (например MainActivity) ближе к началу запускаем:
или для любителей потоков
4) теперь у нас всегда и в любой части нашего проекта есть переменная MyLocationListener.imHere типа Location, в которой хранится самое последнее местоположение пользователя и множество дополнительной информации, как например скорость или точность определения местоположения.
И в заключение: это принципиальный код и тут есть что улучшать. Например нужно учитывать, что первое время локация может быть не определена и imHere будет null, но это всё не скоро: сейчас у нас есть класс, который позволяет нам без лишних усилий и с минимумом знаний добавить геолокацию в свой проект.
(!) Не забудьте: в зависимости от выбранного провайдера нужно добавить в манифест соответствующее разрешение. Например используемый выше GPS_PROVIDER требует добавления следующей строчки в манифест:
Источник
How to Get Current Location in Android Using Location Manager
In this GPS tutorial you will learn how to get current location in android.
LocationManager class provides the facility to get latitude and longitude coordinates of current location. The class in which you want to get location should implement LocationListener and override all its abstract methods.
How to Get Current Location in Android Using Location Manager
Add following permissions to AndroidManifest.xml file.
Following lines of code helps in getting current location.
In requestLocationUpdates() method the 2nd argument is time in milliseconds and 3rd argument is distance in meters. Here I have used 5000 and 5 that means after every 5 seconds and 5 meter the current location is fetched.
To get coordinates use getLatitude() and getLongitude() method on variable of Location class.
Whenever location is changed it can be fetched inside onLocationChanged() method.
Below is simple application that fetches current location on button click and displays it in textview.
Full Source Code
activity_main.xml
AndroidManifest.xml
MainActivity.java
Screenshot
Comment below if found anything incorrect or have doubts related to above android gps tutorial to get current location.
You May Also Like:
27 thoughts on “How to Get Current Location in Android Using Location Manager”
I’m studying 2nd yr cs engineering . will yu plz give some idea to do mini project in c,c++…..
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
it works if you add NETWORK_PROVIDER
Hi,
When i click the buton it show nothing lang and lat…but i add Toast between this,
Toast.makeText(getApplicationContext(), “Your Location”, Toast.LENGTH_LONG).show();
getLocation();
Toast.makeText(getApplicationContext(), “Your Location showing”, Toast.LENGTH_LONG).show();
But,Am able to find long and lat.
Advance Thanks
Hi
how do you solve it please ,i add Toast but nothing change
plz tell us where we needed to insert these toast..we are unable to do correct thsi
after clicking button it is not displaying any location
Makes sure the gps is one, test it in real android device.
I am running the tutorial code on a real device and gps is on but onLocationChanged is never called. I was wondering what version of the sdk you are running?
code not working
if(checkLocationPermission()) <
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Log.e(“Current Location”,”lat: “+location.getLatitude()+” Lon: “+location.getLongitude());
this code is properly work.nycccc and easy code for get loacation.thank you
your code is not working
just button is getting displayed
when i clicked on that button,nothing got displayed
how to get current location not like above.. means current location place name should be displayed
its not working
It is not working
code is not working
I am running the tutorial code on a real device and gps is on but onLocationChanged is never called.
For this to work on my phone(Nougat). I needed to go to Settings, Location Services, App-Level Permission. My newly deployed app appeared in the list. I needed toggle the on button.
Then go back to your app, press the button, wait a few seconds and the location appears
Hope this helps.
thanx man.
.
.
your comment is really helpful
Thank you. This works. The problem at the above code is they are not asking for permission. You must give the permission manually.
your code is not working
just button is getting displayed
when i clicked on that button (GET CURRENT LOCATION),nothing got displayed, i have already GPS on
In above code you displaying the current location of your.,
But what if we want to find the location of other…
can you code for that.
Many Thanks sir,
It is working fine…We have to add device permission dynamically for latest versions of android…
Hi how to give device pemission. me too working on this code.. please help me.
Hi thank you for sharing. i need to get current location. but i click button i didn’t get any values.
am trying 1 week but i can’t get any code. please help me.
Hi, this code works accurately fine. This was not working on emulator. I installed this app in my mobile device and still it was not working. Then as Matt suggested above, I went to Settings of my mobile and typed Permissions in search box to access Permission Settings. There I opened App Permissions options and in App Permissions options I opened Your Location Permissions. There I saw all installed Apps of my device. I just turned on Your Location Permission for this app. Then I turned on GPS and ran the app. It worked.
Also be careful about package name while pasting the above code in your code.
Regards,
Subscribe For Latest Updates
Subscribe to our mailing list and get interesting stuff and updates to your email inbox.
Thank you for subscribing.
Something went wrong.
we respect your privacy and take protecting it seriously
Источник
Get Current Location in Android
This android tutorial is to help learn location based service in android platform. Knowing the current location in an android mobile will pave the way for developing many innovative Android apps to solve peoples daily problem. For developing location aware application in android, it needs location providers. There are two types of location providers,
- GPS Location Provider
- Network Location Provider
Any one of the above providers is enough to get current location of the user or user’s device. But, it is recommended to use both providers as they both have different advantages. Because, GPS provider will take time to get location at indoor area. And, the Network Location Provider will not get location when the network connectivity is poor.
Network Location Provider vs GPS Location Provider
- Network Location provider is comparatively faster than the GPS provider in providing the location co-ordinates.
- GPS provider may be very very slow in in-door locations and will drain the mobile battery.
- Network location provider depends on the cell tower and will return our nearest tower location.
- GPS location provider, will give our location accurately.
Steps to get location in Android
- Provide permissions in manifest file for receiving location update
- Create LocationManager instance as reference to the location service
- Request location from LocationManager
- Receive location update from LocationListener on change of location
Provide permissions for receiving location update
To access current location information through location providers, we need to set permissions with android manifest file.
ACCESS_COARSE_LOCATION is used when we use network location provider for our Android app. But, ACCESS_FINE_LOCATION is providing permission for both providers. INTERNET permission is must for the use of network provider.
Create LocationManager instance as reference to the location service
For any background Android Service, we need to get reference for using it. Similarly, location service reference will be created using getSystemService() method. This reference will be added with the newly created LocationManager instance as follows.
Request current location from LocationManager
After creating the location service reference, location updates are requested using requestLocationUpdates() method of LocationManager. For this function, we need to send the type of location provider, number of seconds, distance and the LocationListener object over which the location to be updated.
Receive location update from LocationListener on change of location
LocationListener will be notified based on the distance interval specified or the number seconds.
Sample Android App: Current Location Finder
This example provides current location update using GPS provider. Entire Android app code is as follows,
XML files for layout and android manifest are as shown below
Android Output
Note: If you are running this Android app with emulator, you need to send the latitude and longitude explicitly for the emulator.
How to send latitude and longitude to android emulator
- Open DDMS perspective in Eclipse (Window -> Open Perspective)
- Select your emulator device
- Select the tab named emulator control
- In ‘Location Controls’ panel, ‘Manual’ tab, give the Longitude and Latitude as input and ‘Send’.
Popular Articles
Comments on «Get Current Location in Android»
nice tutorial sir………..
I am a java developer but not a Android developer. I would like to develop one simple contact save application in android. Could you please publish step by step development procedure for contact book application with sqlite db interaction.
What are all requirement to run anroid applicatio
Very nice article. Steps are nicely explained. Thank you Sir
Hi,
How can i scan barcodes in android application!
yes u can use barcode scan u will find source code for barcode scan check it in github repository once i used zxing(a barcode scanner Engine)
[…] we studied about how to get current geographic location using an android application. That Android app will return latitude and longitude pair to represent current location. Instead of […]
Does this app need any type of internet .
I run the above code.but only hello world is displayed.no location data.Please specify the code for activity main.xml to display the location
Simple and Efficient..
i am new to android ,i tried the same but when i run it shows me “unfortunately app has stopped working” please help me fix this.
Very nice tutorial.Please tell me how can we use these coordinates to locate this position in the map .thank you
First you need to display the map fragment (https://javapapers.com/android/show-map-in-android/), then you need to tile these coordinates on top of it by using location service / activity.
I will post a tutorial for this exact topic very soon.
hi.
its working fine when im using emulator,but it is showing nothing when im uing it in my phone.
just hello world is outputed on the screen.
Hi,
How can i get output in phone instead of emulator because it works in emulator.
i am new to android ,i tried the same but when i run it shows me “unfortunately app has stopped working” please help me fix this
thanks alot for helping by this tutorial..
can u tell me hopw to find the direction and KMS using android google maps
I’m new to android as well and was getting the same error. What solved it was that I tried it on device and not the emulator. The emulator kept giving me error even after sending values through DDMS.
second mistake i made was i changed the name of the package and forgot to change the names in manifest. Just make sure you are not doing the same.
Worked instantly.. Thanks for the tutorial..
how to get date and time from internet in android
Very good tutorial …
Hi,
The latitude and longitude is shown, can you add the direction to the latitude and longitude like
Latitude 37.42 North
Longitude 122.56 East
Because i needed this for astrology app
Thanks Joe,for the post and for GPS Location Provider is works perfectly.
how to develop a music player stand alone application in java……?
very good tutorial…thanks sir
its working fine in emulator kindly intimate how to display in tab
Have you posted any tutorial for network based on network location service yet?
Please give URL,
very simple dear
1-install eclipse.
2-After debug the program u will the .apk file
inside Bin folder.
3-Copy the .apk file and put inside ur mobile and run it…
dear Joe when i install apk file in Phone only
hello world message is display not lat n long find
i an new in android apps please help and suggest how to call .NET web service in this with post and get method
I think you are testing code by emulator. If yes, you need to set lattitude and longtitude manually. Its also said by author at the end of this tutorial. Please look at that and then try. Its running good for me.
great job amazing work simple easy yet effective
Nice one.
But This one is not working inside the room.we need the display the current location using network provider.
Thanks, great tutorial, best i found and works like a charm.
Can you publish one explaning GoogleMaps ?
hi , i manually added langitute and logitute .but nothing showing on my emulator..
it says only
latitute=Location not available
longitude=Location not available
This code is not working inside the room.we need the display the current location using network provider.
Great tutorial. I keep having the same problem with certain apps I write – in that they work on the emulator, but give an error on my cell phone.
App starts up then suddenly gives the message “Unfortunately, GPSapp has stopped”
Any ideas would be greatly appreciated
Galaxy S4 cell, 4.2.2
Apologies – I see this question has been raised a few times before. I have tried the suggestions above (eg make sure package name is same in program and manifest etc) but still no joy. Thanks Bryn
There can be numerous reasons to a crash. Best way to find the reason is to get the LogCat logs when it crashes. Plug the phone in USB and set it as target device. Then launch the app in phone and you can get the logs on this error.
all are incredible !
For anyone who shows “Hello World” on the mobile phone instead current location change MainActivity.java to following:
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;
public class MainActivity extends Activity implements LocationListener <
// The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
// The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
protected LocationManager locationManager;
protected Context context;
protected boolean gps_enabled, network_enabled;
TextView txtLat;
@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);
// getting GPS status
gps_enabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
// getting network status
network_enabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (gps_enabled) <
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
> else if (network_enabled) <
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, 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”);
>
>
In my code, onLocationChanged() method is not getting called while I am running my app on mobile. What may be the reason behind it?
How to send latitude and longitude to android emulator
Open DDMS perspective in Eclipse (Window -> Open Perspective)
Select your emulator device
Select the tab named emulator control
In ‘Location Controls’ panel, ‘Manual’ tab, give the Longitude and Latitude as input and ‘Send’.
For this steps we simple load a .kml file to emulator that will take a automatically from the LOCATION CONTOLS…
Thanks for a nice tutorial.Kindly help me on how to serve the obtained coordinates(latitudes&longitudes) to MySQL database.
Thank you sir…
this is very important to me. Pleas carry on your tutorials ahead.
I have seen some applications being able to retrieve the VLR Global title , something like the Node Number you are latched on , for example in Jordan it will be something like 96279123456 , but from the API i am not able to get to that level , any idea how could that have been done ?
Can anyone please help me on automatic storage of the obtained coordinates (latitude &longitude…from this tutorial)in mySQL database, this should be done without requiring the phone user to press a send button.
May God bless you for your kind assistance.
Happy coding!!
Friends,is there no one who can give a hint on this. Plz your assistance or some links/books to refer to will help me a lot.
I want to find my friend location trough googlemap
So what kind of permission i have to use in my manifest file ,is this possible??
i am working on one friend Find locater .
reply
Sir this code running well in emulator but not in phone device and itz by default shows hello world.. how can i fix it?and as like many people are geeting same problem.. pls gv us proper solution.
Its is really awesome tutorial Thank You 🙂
Sir,
i am using GPS Location find in my application and how to store in sqlite database so i am confuesd please help me sir.
i need source code
[…] said all the above, I just noticed that I have written an Android GPS tutorial already. Though I feel like a buffoon, somehow I have to manage now. Its okay, it will do no harm […]
Источник