2009-10-07 11 views
5

Estoy intentando construir un QRCodeReader para un proyecto en el que nuestro grupo de investigación está trabajando para el iPhone. Después de mucha investigación, encontré el programa llamado QuickMark. Este programa escanea automáticamente para QRCodes. Lo que parece hacer es cargar el UIImagePicker y leer los datos de la cámara. Sospecho que está usando UIGetScreenImage y toma una captura de pantalla de la cámara y la decodifica.takepicture() vs UIGetScreenImage()

Ahora traté de usar el nuevo método takepicture() de la API de iPhone 3.1 pero parece que no se puede hacer lo que hace el anterior que consiste en tomar fotos cada segundo más o menos, silenciosamente. Ahora había escuchado que UIGetScreenImage quizás no sea legal y que Apple se dará vuelta y negará el acceso a su aplicación si la usa. Por lo tanto, mis preguntas son:

a) ¿Quickmark (o cualquier otra aplicación permite) utilizando UIGetScreenImage() y si es así, ¿es legal y,

b) ¿sería posible para takepicture() método para hacer el mismo tipo de la cosa?

Respuesta

1

RedLaser es, sin duda utilizando UIGetScreenImage(). Un vistazo rápido a los símbolos en la biblioteca lo confirma.

2

"Legal" es un término muy vago, pero creo que lo que quieres decir es que la aplicación sería denegada. Hay una lista de elementos que pueden causar la denegación de la aplicación, pero una de las áreas más grises es el uso de encabezados privados. Google se salió con la suya en su aplicación de búsqueda, pero la Internet ardió en furia durante unos meses mientras la gente escribía entrys de blog con palabras muy severas. En pocas palabras, puedes hacer lo que quieras, pero si te atrapan, buena suerte para ti.

Las API funcionan como funcionan, debe ser lo suficientemente simple como para hacer una llamada al takepicture con un NSTimer solo tenga cuidado con la forma en que lo hace, me parece un proceso difícil.

+0

La llamada TakePicture no es realmente silenciosa y no hace mucho útil para esta aplicación; si pudiera silenciarse y no moverse a la pantalla de movimiento/escala, sería fantástico. Mi preocupación es que QuickMark parece haberse salido con la suya ya que no puedo ver otra forma de evitar esto. – Oni

+1

Sí, por legal quise decir "aprobado para el uso de la tienda de aplicaciones por los dioses draconianos de Apple";) – Oni

+0

Habló con un representante de Apple en las últimas Tech Talks ... calculó que takePicture no era lo suficientemente rápido – Oni

0

Mi aplicación fue rechazada (hoy) por usar esta llamada. :(Estoy en busca de una nueva solución mientras escribo ...

+0

Me he dado cuenta de que RedLaser también usa una técnica similar pero su aplicación ha sido permitida. Tiene que haber una técnica estándar para este – Oni

+0

en el momento del lanzamiento, dejan casi cualquier cosa, ahora creo que se han preparado y se están esforzando por hacer cumplir las reglas. las reglas siempre han estado ahí, creo que ahora están prestando más atención – slf

+0

Como se mencionó anteriormente y más adelante, Redlaser y Quickmark han descubierto cómo hacerlo, por lo que debe haber una forma legal de capturar la pantalla. Llamar a takePicture no funciona porque reproduce un sonido cada vez que se toma una foto y (creo) las llamadas didFinishPickingMediaWithInfo con la imagen (que parece difícil de manejar en un hilo que intenta procesar imágenes). UIGetScreenImage hizo el truco ... ¿y ahora qué? – jamey

1

usted recibirá su aplicación rechazada por usar UIGetScreenImage().

+0

Eso no puede ser correcto, ya que estoy casi 100% seguro de que RedLaser y Quickmark usan esta técnica. Realmente, necesito que esto sea confirmado por cualquiera de estas dos compañías pero nadie parece ser capaz de hacerlo. – Oni

0

Algo debe actualizarse ahora?

UIGetScreenImage debería ser legal ahora.

+1

Ya no: http://www.tuaw.com/2010/07/21/devsugar-rip-uigetscreenimage/ – macbirdie

0

Hay una manera de capturar datos de video de la cámara sin usar UIImagePickerController o UIGetScreenImage().
Está disponible desde iOS 4.0 en AVFoundation Framework. see here how.

Cuestiones relacionadas