How to get the user Home/Work location for a user in Android

你说的曾经没有我的故事 提交于 2019-11-27 05:39:29

问题


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.


回答1:


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 :

  1. 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.
  2. You can request that Neura will notify to your user (via Google Cloud Messaging) when he arrived home for example.
  3. 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 :

  1. Find your user home address
  2. Mute/unmute the phone when user arrives/leaves work respectively.
  3. 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:




回答2:


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())




回答3:


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.




回答4:


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.




回答5:


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.




回答6:


You can try using the new API to get the location (fused-provider) and you can use geofences.

Google IO (fused-provider)

Official Documentation Geofences



来源:https://stackoverflow.com/questions/16177235/how-to-get-the-user-home-work-location-for-a-user-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!