Problem, który napotykam, polega na tym, że gdy użytkownik robi zdjęcie za pomocą naszej aplikacji, używając AVCaptureSession
, nie mam możliwości określenia czy zrobiono zdjęcie w trybie portretu czy krajobrazu. Nasza aplikacja obsługuje tylko portret i trzymam blokadę orientacji podczas korzystania z mojego telefonu, więc staram się stworzyć rozwiązanie, zakładając, że inni mogą zrobić to samo.Jak wykryć orientację urządzenia, gdy blokada orientacji jest włączona, a aplikacja obsługuje tylko portret?
Przyjrzałem się użyciu [UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]
, ale gdy blokada orientacji jest włączona, żadne powiadomienia nie są odbierane. Wiem, że ta funkcja jest możliwa, ponieważ podstawowa aplikacja Aparat i kamera w aplikacji Google Hangouts może wykryć obrót (animacje na przyciskach Anuluj i Flash są widoczne), gdy mój telefon ma włączoną blokadę orientacji.
Czy najlepiej jest użyć akcelerometru i wykryć kąt obrotu telefonu? Stara odpowiedź, Detect iPhone screen orientation, sprawia, że oczywiste jest, że wykrycie kąta w ten sposób jest łatwe do zrobienia (oczywiście dostosowanie odpowiedzi do wykorzystania Core Motion zamiast UIAccelerometer), ale jestem ciekawy, czy jest inny sposób, aby to zrobić.
Dzięki za informacje o CMCopyDictionaryOfAttachments, odczytanie metadanych jest o wiele łatwiejsze. Używając 'captureStillImageAsynchronouslyFromConnection', mogę uzyskać orientację = 6. Włączam tryby Landscape w aplikacji, ale bez skutku. Zamierzam wypróbować to w nowej aplikacji, aby upewnić się, że nie ma w tym ukrytego dziwnego ustawienia, które powoduje ten problem. – TheJer
Zakładając, że masz połączenie "AVCaptureConnection *", czy konfigurujesz connection.videoOrientation w dowolnym miejscu? Bez względu na to, co próbuję, metadane zwraca wartość 6 dla orientacji, która ma sens, ponieważ domyślną wartością wideoOrientation jest "AVCaptureVideoOrientationPortrait". Prowadzi mnie to do pierwotnego pytania, w jaki sposób wykryć obrót, aby zmienić orientację przechwytywania. – TheJer
Tak, myślę, że pamiętam, że miałem też z tym problemy. Nie mam teraz czasu, by zagłębić się w to głębiej, niestety. Ale powinno być to możliwe, ponieważ domyślna aplikacja kamery to robi i nie sądzę, żeby mieli problemy z używaniem własnego prywatnego API właśnie do tego. – vegather