如何在 Android 中获取用户的家庭/工作位置
Posted
技术标签:
【中文标题】如何在 Android 中获取用户的家庭/工作位置【英文标题】:How to get the user Home/Work location for a user in Android 【发布时间】:2013-04-17 03:11:46 【问题描述】:我正在开发一个应用程序,它可以为用户提供“信息”项目的快速列表,但我想设置一个选项,以便他在离开家或工作时收到这些项目作为通知。
我注意到(现在在我的设备上使用谷歌)他们可以知道用户的生活和工作地点,以便他们可以在您离开或到达其中一个地方时向您推送通知(一种如果这样然后那样)。
您有什么方法可以获取 Google Now(它们来自谷歌地图)为此使用的坐标(纬度和经度)?我的意思是(GoogleMapsApi > GetFavorite Locations > Get Home Location > Get coordinates > use them in my app)。
如果有,您能否指出一个示例、教程或执行此操作的代码。
提前致谢。
【问题讨论】:
你试过用了吗,locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);它将使用您的 GPS(如果内置在 android 设备中),您可以获得纬度、经度。保存家庭和工作的纬度和经度。每当您收到 onLocationChanged 时,请进行相关工作。 是的。我知道我能做到。但你明白。这个想法是出于 3 个原因不使用 gps 位置。 1.我不想要一个耗电的应用程序 2.我不想问用户这样的事情 这是你家吗? 3. 如果我不想问他,我需要一个复杂的算法,根据这些人在每个地方花费的时间,自己发现家和工作的位置。我想知道我是否可以使用谷歌“已经”计算的位置作为您的家庭和工作地点(就像现在在谷歌中所做的那样)。 我对 google 使用的算法一无所知,但我认为您可以根据时间有一些逻辑。我的意思是,如果它的晚上很可能是它的家,类似的东西。 【参考方案1】:您可以使用名为 Neura 的免费 sdk,它有一个学习阶段,用于检测您的重要场所,例如家庭、工作场所、健身房、杂货店、餐馆等。
另外,还有一个很大的好处 - 当您的用户到达/离开您预先定义的特定地点时,它可以通知您的应用程序。
这完全符合你的需求,对于这个例子,让我们谈谈家庭:
-
寻找你的家:
Neura sdk 会在几天内检测到您的家,因为系统需要了解您的习惯和行踪。所以,当你在一个地方睡了几天,也在那里闲逛时,与一个地方的设备互动 -> 有一个明确的迹象表明这个地方就是你的家。
如果你不想等几天,你也可以向你的用户显示一个对话框告诉他设置他的家,我不得不承认这不是那么聪明,但是有了这个 sdk 你可以@ 987654323@请他选择他的家。
例如,当您的用户到家时,您可以向用户请求 Neura will notify(通过 Google Cloud Messaging)。
当您收到“userArrivedHome”推送时显示您的信息列表。
您可以在 git 上查看这个项目,完全按照我的描述进行操作:
-
Find your user home address
分别在user arrives/leaves work时将手机静音/取消静音。
user arrives/leaves home 时接收事件。
请随意参加这些项目,并随心所欲。
为了找到您的用户家庭地址项目,以下是应用程序的结果:
【讨论】:
【参考方案2】:您可以检测 Wifi 并将其分配到一个地方(家庭/工作)
(我从未尝试过这样的事情,但这可能会有所帮助:http://developer.android.com/reference/android/net/wifi/WifiManager.html#startScan(),http://developer.android.com/reference/android/net/wifi/WifiManager.html#getScanResults())
【讨论】:
【参考方案3】:我认为您无法从 Google API 获取信息。正如 @surender8388 在 cmets 中提到的,唯一的方法是使用位置和时间。
如果您不想使用 GPS,ACCESS_COARSE_LOCATION 是一个不错的选择。
【讨论】:
【参考方案4】:Google Now 和 Waze 一样使用复杂的算法。您还会注意到,Google Now 会在一段时间后询问您某个位置是否重要。它查看用户经常花费大量时间的地方。其中一个肯定会在家,另一个肯定会在工作。只需在 4.2 中询问便宜的位置,然后查看用户趋势。
【讨论】:
【参考方案5】:Google 即时的功能在于节省您访问某个地点的时间和次数,同时使用同一地点和无线网络。从这些数据中,当他们达到一定的确定性时,询问用户是否要将其分配为家庭/工作。
【讨论】:
【参考方案6】:您可以尝试使用新的 API 来获取位置(fused-provider)并且您可以使用地理围栏。
Google IO (fused-provider)
Official Documentation Geofences
【讨论】:
以上是关于如何在 Android 中获取用户的家庭/工作位置的主要内容,如果未能解决你的问题,请参考以下文章
如何在后台运行 android 服务 24x7 以获取用户的位置