Im developing an app that brings the user a quick list of "info" items but i want to set an options so that he receives this items as notifications when he is leaving home or work.
I noticed (using google now on my device) that they can tell where the user lives and works so that they can push you notifications whenever you leave or arrive at one of this places (a sort of if this then that).
Is there any way yo obtain the coordinates (lat and long) that Google Now (they come from google maps) uses for this?. I mean something like (GoogleMapsApi > GetFavorite Locations > Get Home Location > Get coordinates > use them in my app).
If there is, can you point me to an example, tutorial, or code that does this.
Thanks in Advance.
You can use a free sdk called Neura, which has a learning phase for detecting your significant places such as home, work, gym, grocery store, restaurants, etc.
Plus, and a big plus - it can notify your application when your user arrives/leaves specific place you define in advanced.
This suits your needs exactly, for this example, let's talk about home :
- Finding your home :
- The Neura sdk detects your home within few days, since the system needs to learn your habits and whereabouts. So, when you're sleeping at a place for few days, hanging out there as well, interact with devices at a place -> there's a solid indication that this place is your home.
- If you don't want to wait few days, you can also display a dialog to your user to tell him to set his home, which is NOT so much intelligent, i have to admit, but with this sdk you can show your user a picker asking him to select his home.
- You can request that Neura will notify to your user (via Google Cloud Messaging) when he arrived home for example.
- Display your list of infos when you receive a push for 'userArrivedHome'.
You can check out this project on git, doing exactly as i described, for :
- Find your user home address
- Mute/unmute the phone when user arrives/leaves work respectively.
- Receiving an event when user arrives/leaves home.
Feel free to take these projects and do as you please with it.
For finding your user home address project, here's the outcome of the application:
You could detect Wifis and assign them to a place (Home/Work)
(I have never tried anything like this but this might help: http://developer.android.com/reference/android/net/wifi/WifiManager.html#startScan(), http://developer.android.com/reference/android/net/wifi/WifiManager.html#getScanResults())
I don't think you can get the information from Google APIs. As @surender8388 mentions in the comments, the only way to make it out is using location and time.
ACCESS_COARSE_LOCATION is a good choice if you don't want to use GPS.
Well Google Now is using a complex algorithm as does Waze. You will also notice that Google Now will ask you if a location is important after a while. Its looking at places where the user spends a lot of time frequently. One of those will certainly be home and the other will certainly be work. Just ask for cheap location in 4.2 and see where the user trends.
What makes Google Now is to save the time and number of times you visit a place with the hours in the same place and wireless networks. From these data, when they reached a certain certainty, asks the user if wants to assign it as the home/work.
You can try using the new API to get the location (fused-provider) and you can use geofences.
来源:https://stackoverflow.com/questions/16177235/how-to-get-the-user-home-work-location-for-a-user-in-android