Nhóm của tôi đang phát triển một bộ SDK cho barcode scanning, ID scanning và OCR. Chúng tôi sử dụng máy ảnh của thiết bị, cụ thể là AVCaptureSession
để có được các khung hình video mà chúng tôi thực hiện quá trình xử lý của mình.Làm thế nào để sử dụng AVCaptureSession với Slide Over và Split View trong iOS 9?
Chúng tôi đang khám phá các tính năng đa nhiệm mới của iOS 9 Trượt qua và Chế độ xem phân tách.
của Apple đề nghị chọn ra các tính năng này cho các ứng dụng máy ảnh trung tâm, nơi sử dụng toàn bộ màn hình để xem trước và chụp một khoảnh khắc một cách nhanh chóng là một tính năng chính (reference). Đây là cách tiếp cận sử dụng trong ứng dụng mẫu của chúng AVCam. Tuy nhiên, khách hàng của chúng tôi có thể có ứng dụng không thuộc danh mục này (ví dụ: ứng dụng ngân hàng di động), vì vậy chúng tôi không thể buộc họ chọn không tham gia, thay vào đó, chúng tôi cần xử lý các tính năng mới trong SDK. Chúng tôi đang khám phá những gì sẽ là cách tiếp cận tốt nhất để làm điều đó, vì các tài liệu tại thời điểm này không thực sự cho chúng tôi biết phải làm gì.
Chúng tôi đã sử dụng ứng dụng mẫu Máy ảnh đơn giản của chúng tôi để phân tích trường hợp sử dụng. Ứng dụng mẫu có sẵn trên Github và được phát triển dưới dạng iOS 9 Beta 5.
Từ ứng dụng mẫu, có thể thấy rõ sự kiện hệ thống nào xảy ra khi sử dụng Slide Over và khi Chế độ xem tách được sử dụng.
- Khi ứng dụng của chúng tôi là chính, và trượt qua được sử dụng, chúng tôi nhận
UIApplicationWillResignActiveNotification
vàAVCaptureSessionDidStopRunningNotification
- Khi slide Over được sử dụng, và ứng dụng của chúng tôi chỉ là thứ yếu, chúng tôi nhận
UIApplicationWillEnterForegroundNotification
vàAVCaptureSessionDidStopRunningNotification
ngay sau đó - Khi Chế độ xem phân tách được sử dụng, trên mỗi lần chia ngăn, ứng dụng của chúng tôi nhận được
UIApplicationWillResignActiveNotification
. - Tuy nhiên, nếu máy ảnh được đưa ra khi tại Split View, nó ngay lập tức được
AVCaptureSessionDidStopRunningNotification
Vì vậy, theo kinh nghiệm, có vẻ như AVCaptureSession
được ngay lập tức dừng lại khi trượt qua hoặc Split View được sử dụng.
Điều khó hiểu là UIImagePickerController
, ứng dụng mẫu của chúng tôi cũng hỗ trợ, thể hiện hành vi hoàn toàn khác.
UIImagePickerController
không bị dừng khi ứng dụng chuyển sang chế độ xem trên/phân tách, thay vào đó, nó hoạt động hoàn toàn bình thường. Người ta thường có thể chụp ảnh trong Chế độ xem tách. Trong thực tế, hai ứng dụng, cả hai ứng dụng hiện có UIImagePickerController
, có thể hoạt động song song, với UIImagePickerController
của ứng dụng đang hoạt động đang hoạt động. (Bạn có thể thử mà bằng cách chạy ứng dụng mẫu của chúng tôi, và Danh bạ ứng dụng -> New Liên hệ -> Thêm ảnh)
Với tất cả điều này trong tâm trí, những câu hỏi của chúng tôi như sau:
Nếu
AVCaptureSession
bị tạm dừng ngay lập tức khi sử dụng Chế độ xem lật và Chế độ xem phân tách, bạn có nên theo dõiAVCaptureSessionDidStopRunningNotification
và hiển thị thông báo "Máy ảnh bị tạm dừng" cho người dùng để biết rõ ứng dụng không thực hiện quét không?Tại sao hành vi của
UIImagePickerController
khác vớiAVCaptureSession
?Chúng ta có thể mong đợi từ Apple so với hành vi phiên bản beta trong tương lai của
AVCaptureSession
thay đổi cho phù hợp vớiUIImagePickerController
không?
Tôi đang làm việc trên một ứng dụng mà tôi cũng cần phải sử dụng một bản xem trước camera và nó không phải ở tất cả các ứng dụng máy ảnh trung tâm . Bạn có quản lý để làm cho ứng dụng của bạn hoạt động ở chế độ SplitView không? Hay đơn giản là không được iOS cho phép sử dụng AVCaptureSession trong SplitView? – Joss