توجه: این صفحه به پکیج Camera2 اشاره دارد. توصیه میکنیم از CameraX استفاده کنید، مگر اینکه برنامه شما به ویژگیهای خاص و سطح پایین Camera2 نیاز داشته باشد. هر دو CameraX و Camera2 از اندروید 5.0 (سطح API 21) و بالاتر پشتیبانی می کنند.
توسعه دهندگان دوربین ممکن است هنگام کار بر روی برنامه های دوربین که روی دستگاه های تاشو اجرا می شوند با چالش های منحصر به فردی مواجه شوند. برخلاف گوشیهای هوشمند، که در آنها چندین فرض مربوط به جهت نمایش، جهتگیری دوربین، و چهره اغلب معتبر هستند، دستگاههای تاشو میتوانند عوامل شکل، طرحبندی نمایشگر و ترکیبهای دوربین متفاوتی داشته باشند.
تلفن های هوشمند معمولاً دارای دوربین هایی با جهت پرتره مطابق با نمایشگر هستند. با این حال، این ممکن است برای برخی از حالت های تاشو درست نباشد. یک صفحه نمایش تا شده ممکن است یک حسگر با جهت عمودی و سنسور دیگری با جهت افقی داشته باشد.
اگر برنامه دوربین شما از SurfaceTexture
یا خط لوله رندر سفارشی استفاده می کند، از جهت سنسور دوربین آگاه باشید.
این تضمین می کند که محتوای رندر شده همیشه از نظر فیزیکی عمودی است و پیکسل ها مربع باقی می مانند و از کشش در جهت های افقی یا عمودی اجتناب می کنند.
این راهنما اطلاعاتی در مورد آنچه توسعه دهندگان Camera2 باید در نظر بگیرند و مراحل تنظیم رندر پیش نمایش دوربین برای حالت های مختلف دستگاه تاشو ارائه می دهد.
نحوه تاثیر سوئیچ های وضعیت دستگاه بر دوربین ها
دستگاه های تاشو ممکن است شامل موارد زیر باشد:
- دو یا چند نمایشگر فیزیکی
- چندین دستگاه دوربین فیزیکی
این دستگاه ها بسته به وضعیت دستگاه می توانند فعال شوند. برای سادهتر کردن کنترل وضعیت دستگاه، دستگاههای خاصی یک دوربین منطقی را اجرا میکنند که از دو یا چند حسگر فیزیکی تشکیل شده است.
اگر توسعهدهندگان پخش پیشنمایش را در چنین دستگاه دوربین منطقی باز کرده و فعال کنند، دوربین بهطور خودکار بین دستگاههای فیزیکی در پاسخ به حالتهای تا شدگی خاص سوئیچ میکند.
به عنوان مثال، یک دستگاه تاشو با دو نمایشگر را در نظر بگیرید:
- یک صفحه پرتره معمولی در حالت تا شده با یک دوربین جلوی فیزیکی "خارجی" در جهت پرتره.
- یک صفحه نمایش تاشو که در حالت باز شده با دوربین فیزیکی جلوی "داخلی" با جهت افقی نسبت به نمایشگر باز شده فعال شده است.
هنگامی که کاربر دستگاه را تا می کند یا باز می کند در حالی که برنامه از دوربین منطقی جلو پخش می شود، اجرای دستگاه ممکن است در پاسخ به سوئیچ وضعیت هر دستگاه بین حسگرهای فیزیکی داخلی و خارجی جابجا شود.
سوئیچ نمایش ممکن است به برنامه نیاز داشته باشد که رابط کاربری خود را تنظیم کند.
همراه با هر گونه تنظیمات رابط کاربری، توسعه دهندگان ممکن است نیاز داشته باشند که نحوه نمایش پیش نمایش دوربین را با توجه به دوربین فیزیکی فعال تنظیم کنند.
سوئیچ های دستگاه دوربین فیزیکی
رابط منطقی دستگاه دوربین API های لازم را برای کنترل سوئیچ های فیزیکی دوربین فراهم می کند. توسعه دهندگان باید مقدار شناسه فیزیکی فعال را کنترل کنند.
در دستگاههای تاشو، نتیجه ضبط شناسه فیزیکی فعال میتواند در پاسخ به سوئیچهای حالت تاشوی مختلف مانند تا شدن و باز شدن تغییر کند.
در چنین رویدادهایی، توسعهدهندگان باید از شناسه فیزیکی فعال فعلی استفاده کنند و ویژگیهای دوربین مربوطه را بررسی کنند.
دو ویژگی مهم دوربین که به طور بالقوه می تواند تغییر کند و بر رندر پیش نمایش تأثیر بگذارد، جهت گیری حسگر و لنز رو به رو است.
اگر خط لوله رندر پیش نمایش برنامه شما برای محاسبه ماتریس تبدیل نهایی آن به پارامترهای استاتیک دوربین بستگی دارد، مطمئن شوید که مقادیر فعلی را پاس کرده و تبدیل های گرافیکی را به روز می کنید.
برای درک عمیقتر خطوط لوله پیشنمایش دوربین و نحوه محاسبه تغییرات، به راهنمای پیشنمایش دوربین مراجعه کنید.
مفروضات نامعتبر اضافی
ذخیره مقادیر مشخصه دوربین در حافظه پنهان توصیه نمی شود.
نمیتوانید فرض کنید که ویژگیهای دوربین ثابت میمانند، زیرا وقتی دستگاه تا شده یا باز میشود، ویژگیها میتوانند تغییر کنند. به همین دلیل، شما نباید ویژگی های دوربین را ذخیره و مجدداً استفاده کنید. در عوض، هر بار ویژگی های دوربین را بررسی کنید.
موردی را در نظر بگیرید که در آن یک برنامه دوربین از نمایشگر جلوی بیرونی شروع می شود و ویژگی های فعلی دوربین جلو و عقب را در حافظه پنهان ذخیره می کند. اگر برنامه در صفحه نمایش داخلی مجدداً راه اندازی شود، سنسور فیزیکی فعال جلو ممکن است جهت متفاوتی داشته باشد و به طور بالقوه باعث ایجاد عوارض جانبی پیش نمایش ناخواسته شود.