takepicture () против UIGetScreenImage ()

Я пытаюсь создать QRCodeReader проект, над которым наша исследовательская группа работает для iPhone. После долгих исследований я нашел программу под названием QuickMark. Эта программа автоматически сканирует QR-коды. Кажется, он загружает UIImagePicker и считывает данные с камеры. Я подозреваю, что он использует UIGetScreenImage, делает снимок экрана с камеры и расшифровывает его.

Теперь я попытался использовать новый метод takepicture() из API iPhone 3.1, но он, похоже, не в состоянии делать то, что описано выше, а именно делать фотографии каждую секунду или около того, беззвучно. Теперь я слышал, что UIGetScreenImage, возможно, незаконно и что Apple откажется от доступа к вашему приложению, если они его используют. Итак, мои вопросы:

a) Quickmark (или любое другое разрешенное приложение) использует UIGetScreenImage(), и если да, то является ли это законным и,

б) возможно ли, чтобы метод takepicture() делал то же самое?


person Oni    schedule 07.10.2009    source источник


Ответы (7)


RedLaser определенно использует UIGetScreenImage (). Быстрый взгляд на символы в их библиотеке подтверждает это.

person acoward    schedule 12.11.2009

«Легальный» - это очень расплывчатый термин, но я думаю, вы имеете в виду, что приложению будет отказано. Существует обширный список вещей, которые могут вызвать отказ приложения, но одна из самых серых областей - использование частных заголовков. Google сошло с рук в своем поисковом приложении, но Интернет кипел от ярости в течение нескольких месяцев, в то время как люди писали записи в блогах с очень суровыми формулировками. В итоге, вы можете делать все, что хотите, но если вас поймают, удачи вам.

API-интерфейсы в значительной степени работают так, как они работают, должно быть достаточно просто, чтобы вызвать цикл takepicture с NSTimer просто будьте осторожны с тем, как вы это делаете, мне кажется, что это тяжелый процесс.

person slf    schedule 07.10.2009
comment
Вызов TakePicture на самом деле не является тихим и не очень полезен для этого приложения; если бы его можно было сделать бесшумным и не переходить на экран перемещения / масштабирования (и т. д.), тогда это было бы здорово. Меня беспокоит, что QuickMark, похоже, сошёл с рук, поскольку я не вижу другого выхода. - person Oni; 09.10.2009
comment
Да, под юридическим я имел в виду разрешение на использование магазина приложений драконовскими богами Apple;) - person Oni; 09.10.2009
comment
Разговаривал с представителем Apple на недавних технических переговорах ... он считал, что TakePicture был недостаточно быстрым. - person Oni; 13.11.2009
comment
Apple начала разрешать использование этого API, было официальное объявление о форматах поддержки. См. Приложение uStream. - person Glenn Howes; 22.12.2009
comment
Да, это официально - теперь вы можете использовать UIGetScreenImage (). Я полагаю, Apple было стыдно за это после того, как разрешили эту штуку ustream. devforums.apple.com/message/149553#149553 Pat - person Pat Niemeyer; 11.01.2010
comment
И теперь в этом снова официально отказано: tuaw.com/2010/07/ 21 / devsugar-rip-uigetscreenimage ПРИМЕЧАНИЕ: это заменило старый комментарий, в котором говорилось, что существует альтернатива 3.x. В альтернативе Apple прямо указано, что она НЕ работает с видеоконтентом. - person Chris R. Donnelly; 23.07.2010
comment
То, что мы говорим об этом, отправляет разработчикам неоднозначные сообщения, что делает вещи излишне расстраивающими. Я действительно думаю, что AV Foundation сейчас движется в правильном направлении - person slf; 25.07.2010

Ваше приложение будет отклонено за использование UIGetScreenImage ().

person Todd Hopkinson    schedule 13.10.2009
comment
Тогда это не может быть правильным, поскольку я почти на 100% уверен, что RedLaser и Quickmark используют эту технику. На самом деле, мне нужно получить подтверждение от любой из этих двух компаний, но, похоже, никто не может. - person Oni; 14.10.2009

Мое приложение было отклонено (сегодня) за использование этого вызова. :( Я ищу новое решение, набирая ...

person jamey    schedule 08.10.2009
comment
Я заметил, что RedLaser также использует похожую технику, но их приложение было разрешено. Для этого должна быть стандартная техника. - person Oni; 09.10.2009
comment
при запуске они впускают что угодно, теперь я думаю, что они укомплектованы персоналом и ужесточают меры по обеспечению соблюдения правил. правила были всегда, я просто думаю, что теперь им уделяют больше внимания - person slf; 09.10.2009
comment
Как упоминалось выше и ниже, Redlaser и Quickmark выяснили, как это сделать, поэтому должен существовать законный способ сделать снимок экрана. Вызов takePicture не работает, потому что он воспроизводит звук каждый раз, когда делается снимок, и (я считаю) вызовы didFinishPickingMediaWithInfo с изображением (что, кажется, трудно управлять в потоке, пытающемся обработать изображения). UIGetScreenImage сделал свое дело ... что теперь ?! - person jamey; 09.10.2009
comment
Я разговаривал с людьми из Apple App Review и DTS. Они НЕ разрешают использование каких-либо приложений с UIGetScreenImage и приняли к сведению те, которые, похоже, используют его. Им необходимо уравнять правила игры и либо удалить приложения, которые их используют, либо предоставить остальным из нас такие же привилегии, которые предоставлены Quickmark, Redlaser, QRapp, i-nigma и другим. - person jamey; 22.10.2009

http://www.redlaser.com/SDK.aspx

Здесь они намекают на то, что использовали эту функцию, со ссылкой на эту страницу.

person SuP    schedule 15.10.2009

Что-то надо обновить сейчас?

UIGetScreenImage теперь должен быть легальным.

person Forrest    schedule 08.07.2010

Есть способ захвата видеоданных с камеры без использования UIImagePickerController или UIGetScreenImage ().
Он доступен с iOS 4.0 в AVFoundation Framework. посмотрите здесь, как это сделать.

person krafter    schedule 04.02.2011