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