1

我想问一件事。我现在知道不可能通过普通的 SDK 应用程序打开 GPS。我的问题是我需要在没有用户确认的情况下执行此操作(我的应用程序的基础是静默工作)。我需要它,因为我的应用程序旨在被公司用来跟踪他们的设备(平板电脑)。它需要打开 GPS 以获取位置,然后将其关闭。这意味着,如果我们提示用户打开 GPS,他可能不会这样做,应用程序(实际上是一项服务)将无法正常工作。

我的下一步是寻找替代解决方案,我的意思是,如果我们使用设置打开 GPS,它最终会被核心应用程序/服务打开。我的假设是它使用本机代码来访问 GPS 设备并将其打开(如果我错了,请纠正我并指出正确的答案)。

因此我的问题是 - 如果可能的话,我如何在 NDK 中做到这一点,然后如何将它与我的应用程序集成。如果NDK处理不了,怎么办?一定有办法,因为它最终是在设置中完成的。

我也想问关于互联网连接的相同问题(或者使用网络提供商获取位置)。

提前感谢您的任何贡献!

4

2 回答 2

0

您可能会找到一种通过 NDK/JNI 调用处理 GPS 的方法,但在 Android 设备上没有通知用户的 GPS 之类的东西。他可以关闭 GPS 或拒绝打开它。在这种情况下,该设备本身(硬件)会关闭 GPS 传感器。

可能的方法是使用其他方法来定位设备:

  • Wifi 为您提供的位置不如 GPS 准确,但总比没有好
  • 运营商根据到达其天线的信号强度跟踪设备的位置。但我还没有看到任何能够处理这个问题的 Android 界面(如果有人知道如何获取该信息,可能会在这里问一个问题)
  • 我处理你的问题的方式是在组织方面(因为这是公司内部的东西):你基本上对用户说:“打开 GPS,你,用户,可以访问你的电子邮件”(嗯,作为示例)给予一些东西,你会得到一些回报:-)
于 2013-09-22T12:28:39.543 回答
0

“设置”不是一开始的应用程序。

因此,如果您已经制作了一个应用程序,您应该以某种方式了解 Android 应用程序的基础知识,但如果您并不真正了解它们,那么我想说这些应用程序通常在“沙箱”中运行,这些应用程序可能会被破坏/终止系统认为有必要时。也没有“静音模式”之类的东西。如果您的设备上安装了 Android 操作系统,用户必须接受/拒绝权限并且用户必须控制他的设备。当然,有一些方法可以规避这种情况,这些方法可能包括:

  1. 让所有设备在 Google Play 上拥有一个中央帐户,并激活服务以在设备丢失时擦除/销毁设备,(您可以在设置中找到它,因为您提到了它......在管理员帐户下)并将事情原样保留在那里是因为这就是你一天结束时所需要的。
  2. (需要启用 1)您应该让您的所有公司设备(如果您想成为那种狱卒,但走这条路会让您的员工只将您视为一个不太好的雇主)运行您的软件和每个需要访问您的网络的单一事物将在专有的自定义加密通道(无公共加密)上运行,并且使用管理员帐户,您可以控制用户可以在其设备上安装的内容,您可以限制唯一的应用程序就是上面提到的那个应用程序。现在将您的员工需要的所有内容作为您的应用程序的子应用程序;)最重要的是,这些应用程序只能在有 GPS 信号的情况下运行(因此,如果您的员工进入管道......
  3. 做一个好的雇主,让他们随心所欲地使用你给他们的设备。如果您给予信任,您会为他们所做的工作而感到高兴,同时如果您监禁人们,您会收到负面情绪和糟糕的表现(最终它甚至会朝着人们会离开去寻找更好的雇主的方向发展)

如果我站在你的立场上,我肯定会从所有 3 个选项中选择第 3 个选项。从技术挑战中,我认为#2 是唯一的方法和一个非常有趣的架构,你可以在很长一段时间内实现......所以你还需要确保在这方面投入的努力值得你花 2 个小时雇主会在家里和他的孩子一起玩愤怒的小鸟;)但是,如果您比任何现实世界的应用程序都更愿意接受挑战,那么这对您来说是一个从各个角度学习 android 操作系统的绝佳机会。NDK 可能会在这里为您提供帮助,但不是您想要的方式......更多的是自定义加密等等。

编辑:对不起,我扭曲的逻辑和表达方式,但已经很晚了,已经很长的一天了。

于 2013-11-07T00:18:54.573 回答