如何在 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:如何在用户关闭位置设置时获取地理围栏事件?

如何在家庭活动android上显示进度对话框?

如何在后台运行 android 服务 24x7 以获取用户的位置

Neura 会自动识别家庭、办公室等位置,还是用户必须手动输入它们?

如何在 Android 中获取视频的位置数据?

在后台服务中使用融合位置获取GPS更新前(15分钟)?