Проблема, с которой я столкнулся, заключается в том, что когда пользователь делает снимок с нашим приложением, используя AVCaptureSession
, у меня нет способа определить взяли ли они фотографию в режиме «Портрет» или «Пейзаж». Наше приложение поддерживает только портрет, и я сохраняю блокировку ориентации при использовании моего телефона, поэтому я пытаюсь построить решение, предполагая, что другие могут сделать то же самое.Как определить ориентацию устройства, когда включена блокировка ориентации, и приложение поддерживает только портрет
Я изучил использование [UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]
, но когда включена блокировка ориентации, никаких уведомлений не поступает. Я знаю, что эта функциональность возможна, потому что базовое приложение камеры и камера в приложении Google Hangouts обнаруживают поворот (анимации на кнопках «Отмена» и «Вспышка» очевидны), когда на моем телефоне включен «Ориентационный замок».
Могу ли я использовать акселерометр и определить угол поворота телефона? Старый ответ, Detect iPhone screen orientation, делает очень очевидным, что определение угла таким образом легко сделать (очевидно, адаптируя ответ на использование Core Motion вместо UIAccelerometer), но мне любопытно, есть ли другой способ сделать это.
Благодарим за внимание в CMCopyDictionaryOfAttachments, что значительно облегчает чтение метаданных. Используя 'captureStillImageAsynchronouslyFromConnection', я все еще могу получить ориентацию = 6. Я включил режимы Landscape в приложении, но безрезультатно. Я собираюсь попробовать его в новом бренде, чтобы убедиться, что в нем нет какой-то странной настройки, которая вызывает эту проблему. – TheJer
Предполагая, что у вас есть соединение «AVCaptureConnection *», устанавливаете ли вы соединение.videoOrientation где угодно? Независимо от того, что я пытаюсь, метаданные возвращают 6 для ориентации, что имеет смысл, поскольку по умолчанию для видеоопределения является «AVCaptureVideoOrientationPortrait». Это приводит меня обратно к первоначальному вопросу о том, как определить поворот, чтобы изменить ориентацию захвата. – TheJer
Да, я думаю, что я помню, с некоторыми проблемами. Не успевайте сейчас копать глубже, к сожалению. Но это должно быть возможно, потому что приложение камеры по умолчанию делает это, и я не думаю, что они столкнулись с проблемой использования своего частного API только для этого. – vegather