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

依然范特西╮ 提交于 2019-11-28 06:20:00

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:

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.

Google IO (fused-provider)

Official Documentation Geofences

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