takepicture() vs UIGetScreenImage()

Oni picture Oni · Oct 7, 2009 · Viewed 10.4k times · Source

I'm trying to build a QRCodeReader for a project our research group is working on for the iPhone. After much research I found the program called QuickMark. This program scans automatically for QRCodes. What it appears to do is load the UIImagePicker and read off data from the camera. I suspect it is using UIGetScreenImage and taking a screenshot from the camera and decoding it.

Now I tried using the new takepicture() method from the 3.1 iPhone API but that seems not to be able to do what the above does which is take photos every second or so, silently. Now I had heard that UIGetScreenImage is perhaps not legal and that Apple will turn around and deny access to your App if they use it. So, my questions are:

a) Is Quickmark (or any other allowed app) using UIGetScreenImage() and if so, is it legal and,

b) would it be possible for takepicture() method to do the same sort of thing?

Answer

slf picture slf · Oct 7, 2009

"Legal" is a really vague term, but I think what you mean is would the app get denied. There is a laundry list of things that could cause app denial, but one of the grayest of gray areas is the use of private headers. Google got away with it in their search app, but the internet was ablaze in fury for a few months while people wrote very sternly worded blog entrys. Bottom line, you can do whatever you want, but if you get caught, good luck to you.

The APIs pretty much work the way they work, it should be simple enough to loop a call to takepicture with a NSTimer just be careful with how you do it, seems like a heavy handed process to me.