Xcode:有没有办法使用UIImagePicker禁用iOS Camera?

时间:2012-09-27 17:27:12

标签: iphone xcode function camera

好吧,我想问题就是这一切

我愿意使用私有API,我正在尝试创建一个应用程序,如果它检测到某个GPS:位置,相机功能应自行禁用。 。 。 。

2 个答案:

答案 0 :(得分:2)

我假设您想在iDevice位于特定位置时禁用相机使用。我认为你不能成功。即使您可以编写一个应用程序,当它检测到某个纬度内的位置时会禁用相机,可能是通过自己激活相机而不允许它被使用,但不能保证您的应用程序甚至可以在后台运行。此外,位置服务可能已关闭,您的应用程序将无法知道其位置。您还必须越狱设备以绕过沙盒。现在,没有办法在iOS中编写通用守护进程,当然也不能捕获硬件资源。如果我误解了,你可能想要详细说明你打算做什么。

答案 1 :(得分:2)

注意:此解决方案不使用UIImagePicker。我假设你指的是内置的Camera.app,只是想要一些方法来禁用它。

如果你愿意越狱你的设备(我在你的评论中读到),那么你应该能够做到这一点。

首先,您需要编写iOS 启动守护程序。这是一个后台进程(无UI),它只是一直运行,并监视位置。见the blog for an example of how to write a launch daemon。此示例甚至显示了一个监视位置的守护程序,这是您需要的。

然后,当您的守护程序检测到您位于特殊位置时,您只需更改/Applications/Camera.app/Camera上的可执行权限即可。使其不可执行(chmod 664而不是775)。

通过系统调用从您的应用调用chmod命令:

system("chmod 664 /Applications/Camera.app/Camera");

或者,您也可以使用NSFileManager API修改文件的权限属性。

当然,当您离开该区域时,您需要更改权限(您可能希望使应用程序保守,因此如果没有可用的位置数据,在计时器延迟后,您重新启用相机)

我相信我上面链接的守护程序教程会将你的守护进程设置为以root用户身份运行(userid = 0),这可能是获得更改Camera可执行权限所必需的。如果没有,发布回复,我会挖掘更多信息。我有多个守护进程在我的手机上运行(我刚刚写过),并且他们确实拥有root权限,所以我必须弄明白该怎么做:)

此外,正如欧文所说,位置服务可能会被关闭,或者位置修复可能无法使用。我不确定这个应用程序是否仅适合您,提醒您不要在某个位置拍照,或者是否需要保护其他用户,他们会试图打败保护。如果这对您来说是一个问题,请发布更多信息,我们将从那里开始......

注意:如果在进入无图片区域之前它已经在运行,我不确定是否还需要禁用相机。如果是这样,您可以让守护进程在Camera进程上发出kill命令。