是否有可能制作一个基于位置工作的 Android 应用程序,例如当你开始工作时,该应用程序可能会关闭 WiFi 或蓝牙或更改任何其他系统设置以节省电池或其他东西?
该应用程序将要求用户输入他们希望应用程序开始工作的位置,例如他们的地址,当手机看到他们已经到达该位置时,它将开始工作。我想这样做,但我不知道从哪里开始。
我已经有一些安卓应用开发经验。
是否有可能制作一个基于位置工作的 Android 应用程序,例如当你开始工作时,该应用程序可能会关闭 WiFi 或蓝牙或更改任何其他系统设置以节省电池或其他东西?
该应用程序将要求用户输入他们希望应用程序开始工作的位置,例如他们的地址,当手机看到他们已经到达该位置时,它将开始工作。我想这样做,但我不知道从哪里开始。
我已经有一些安卓应用开发经验。
是的,这绝对是可能的。我已经研究了大约三个具有相同概念的应用程序。
您需要创建一个中心点并为其定义一个半径。然后您需要计算当前位置与该特定中心点的距离,如果您的距离小于或等于半径,则触发以打开您想要的服务。在android中你可以使用
LocationManager class
用于收集数据。如果您需要更多帮助,我也可以提供相同的帮助。
您是否尝试过 GeoFencing,它真的很酷。它允许您定义中心点和半径。一旦用户进入这个半径,你就会得到回调或一个pendingIntent。你可以在你的回调中做你想做的事。
您可以获取客户的地址并围绕他们的位置建立地理围栏。
编辑 :
如果您选择不使用GeoFenceing
(无论出于何种原因),请注意这LocationManager
在大多数手机(三星)上是高度错误和不稳定的。
取而代之LocationClient
的是,它会LocationManager
处理我们处理的所有废话,并提供更快的定位、更少的电池和定制的准确性。
编辑 :
如果有人试图以其他方式说服您,请查看此内容。来自谷歌开发者的视频和他们谈论为什么LocationManager
糟糕,以及为什么他们知道并帮助我们弄清楚传感器为整个解决方案增加的价值。
编辑:您的解决方案设计 您需要 2 个地理围栏 1) 外部,您可以将其硬编码到距办公室 500 m 的假想范围内。从那时起,您可以开始寻找 wifizones 2)一旦找到 wifizone,保存 gps 和与他的地址点的距离。那是你的内半径。
1 地理围栏由您的安装定义,第二个地理围栏由您的运行时定义。
2nd Geofence 并用于禁用 GPS(仅在您决定使用的情况下LocationManager
)。如果不是,您将不需要这个,LocationClient
将做它最擅长的事情。
我在 Windows Phone 上玩过这样的概念已经有一段时间了,我认为这也适用于 Android。
基本上,您将使用设备的 GPS 来检测您的位置,然后将其与用户保存的位置进行比较。如果该位置在已保存设置的范围内,请执行操作。
然而,GPS 的使用会消耗电池电量,因此您必须尝试一下以使其成为一种有效的方法。