اندروید 14 ویژگی ها و API های عالی را برای توسعه دهندگان معرفی می کند. موارد زیر به شما کمک می کند تا با ویژگی های برنامه های خود آشنا شوید و با API های مرتبط شروع به کار کنید.
برای فهرست دقیق APIهای اضافه شده، اصلاح شده و حذف شده، گزارش تفاوت API را بخوانید. برای جزئیات بیشتر در مورد APIهای اضافه شده به مرجع Android API مراجعه کنید — برای Android 14، به دنبال APIهایی باشید که در سطح API 34 اضافه شده اند. برای اطلاع از مناطقی که تغییرات پلت فرم ممکن است بر برنامه های شما تأثیر بگذارد، حتماً تغییرات رفتار Android 14 را برای برنامه هایی که اندروید 14 و برای همه برنامه ها را هدف قرار دهید.
بین المللی شدن
ترجیحات زبان برای هر برنامه
Android 14 ویژگی های زبان هر برنامه را که در Android 13 (سطح API 33) معرفی شده بود با این قابلیت های اضافی گسترش می دهد:
ایجاد خودکار
localeConfig
یک برنامه : با شروع Android Studio Giraffe Canary 7 و AGP 8.1.0-alpha07، میتوانید برنامه خود را به گونهای پیکربندی کنید که از اولویتهای زبان هر برنامه بهطور خودکار پشتیبانی کند. بر اساس منابع پروژه شما، افزونه Android Gradle فایلLocaleConfig
را تولید می کند و یک مرجع به آن در فایل مانیفست نهایی اضافه می کند، بنابراین دیگر نیازی به ایجاد یا به روز رسانی فایل به صورت دستی ندارید. AGP از منابع موجود در پوشههایres
ماژولهای برنامه شما و هر وابستگی ماژول کتابخانهای برای تعیین مکانهای گنجاندن در فایلLocaleConfig
استفاده میکند.بهروزرسانیهای پویا برای
localeConfig
یک برنامه : از روشهایsetOverrideLocaleConfig()
وgetOverrideLocaleConfig()
درLocaleManager
برای بهروزرسانی پویا فهرست زبانهای پشتیبانیشده برنامه خود در تنظیمات سیستم دستگاه استفاده کنید. از این انعطافپذیری برای سفارشیسازی فهرست زبانهای پشتیبانیشده در هر منطقه، اجرای آزمایشهای A/B یا ارائه فهرست بهروزرسانیشده از مناطق استفاده کنید، اگر برنامه شما از فشارهای سمت سرور برای محلیسازی استفاده میکند.قابلیت مشاهده زبان برنامه برای ویرایشگرهای روش ورودی (IME) : IMEها می توانند از متد
getApplicationLocales()
برای بررسی زبان برنامه فعلی و تطبیق زبان IME با آن زبان استفاده کنند.
Grammatical Inflection API
3 میلیارد نفر به زبانهای جنسیتی صحبت میکنند: زبانهایی که دستههای دستوری (مانند اسمها، افعال، صفتها و حروف اضافه) بر اساس جنسیت افراد و اشیایی که با آنها صحبت میکنید یا درباره آنها صحبت میکنید، عطف میشوند. به طور سنتی، بسیاری از زبان های جنسیتی از جنسیت دستوری مذکر به عنوان جنسیت پیش فرض یا عمومی استفاده می کنند.
مخاطب قرار دادن کاربران در جنسیت دستوری اشتباه، مانند خطاب قرار دادن زنان در جنسیت دستوری مذکر، می تواند بر عملکرد و نگرش آنها تأثیر منفی بگذارد . در مقابل، یک رابط کاربری با زبانی که به درستی جنسیت گرامری کاربر را منعکس میکند، میتواند تعامل کاربر را بهبود بخشد و تجربه کاربری شخصیتر و طبیعیتر را ارائه دهد.
برای کمک به ایجاد یک رابط کاربر محور برای زبانهای جنسیتی، Android 14 Grammatical Inflection API را معرفی میکند که به شما امکان میدهد بدون تغییر دادن برنامه خود، از جنسیت دستوری پشتیبانی کنید.
،برای کمک به ایجاد یک رابط کاربر محور برای زبانهای جنسیتی، Android 14 Grammatical Inflection API را معرفی میکند که به شما امکان میدهد بدون تغییر دادن برنامه خود، از جنسیت دستوری پشتیبانی کنید.
،برای کمک به ایجاد یک رابط کاربر محور برای زبانهای جنسیتی، Android 14 Grammatical Inflection API را معرفی میکند که به شما امکان میدهد بدون تغییر دادن برنامه خود، از جنسیت دستوری پشتیبانی کنید.
،برای کمک به ایجاد یک رابط کاربر محور برای زبانهای جنسیتی، Android 14 Grammatical Inflection API را معرفی میکند که به شما امکان میدهد بدون تغییر دادن برنامه خود، از جنسیت دستوری پشتیبانی کنید.
ترجیحات منطقه ای
تنظیمات برگزیده منطقه ای به کاربران امکان می دهد واحدهای دما، روز اول هفته و سیستم های شماره گذاری را شخصی کنند. اروپاییای که در ایالات متحده زندگی میکند ممکن است ترجیح دهد واحدهای دما بر حسب سانتیگراد باشد تا فارنهایت و برنامهها به جای پیشفرض یکشنبه ایالات متحده، دوشنبه را بهعنوان آغاز هفته در نظر بگیرند.
منوهای جدید تنظیمات Android برای این تنظیمات برگزیده، مکانی قابل شناسایی و متمرکز را برای تغییر تنظیمات برگزیده برنامه در اختیار کاربران قرار می دهد. این تنظیمات از طریق پشتیبان گیری و بازیابی نیز ادامه می یابد. چندین API و intent - مانند getTemperatureUnit
و getFirstDayOfWeek
- به برنامه شما اجازه خواندن به تنظیمات برگزیده کاربر را می دهند، بنابراین برنامه شما می تواند نحوه نمایش اطلاعات را تنظیم کند. همچنین میتوانید یک BroadcastReceiver
را در ACTION_LOCALE_CHANGED
ثبت کنید تا با تغییر تنظیمات منطقهای، تغییرات پیکربندی محلی را مدیریت کنید.
برای پیدا کردن این تنظیمات، برنامه تنظیمات را باز کنید و به سیستم > زبانها و ورودی > تنظیمات برگزیده منطقهای بروید.
قابلیت دسترسی
مقیاس بندی فونت غیر خطی تا 200٪
با شروع اندروید 14، این سیستم از مقیاس بندی فونت تا 200% پشتیبانی می کند، گزینه های دسترسی اضافی را به کاربران کم بینا ارائه می دهد که با دستورالعمل های دسترسی به محتوای وب (WCAG) مطابقت دارد.
برای جلوگیری از بزرگ شدن عناصر متنی بزرگ روی صفحه، سیستم یک منحنی مقیاسبندی غیرخطی اعمال میکند. این استراتژی مقیاسبندی به این معنی است که متن بزرگ به اندازه متن کوچکتر مقیاس نمیشود. مقیاسبندی غیرخطی فونت به حفظ سلسلهمراتب متناسب بین عناصر با اندازههای مختلف کمک میکند و در عین حال مشکلات مربوط به مقیاسگذاری خطی متن را در درجات بالا کاهش میدهد (مانند قطع شدن متن یا متنی که به دلیل اندازه نمایش بسیار بزرگ خواندن آن سختتر میشود).
برنامه خود را با مقیاس بندی فونت غیرخطی آزمایش کنید
اگر قبلاً از واحدهای پیکسل های مقیاس شده (sp) برای تعریف اندازه متن استفاده می کنید، این گزینه های اضافی و بهبودهای مقیاس بندی به طور خودکار روی متن در برنامه شما اعمال می شوند. با این حال، همچنان باید تست UI را با حداکثر اندازه فونت فعال (200%) انجام دهید تا مطمئن شوید که برنامه شما اندازه فونت را به درستی اعمال میکند و میتواند اندازه فونتهای بزرگتر را بدون تأثیرگذاری بر قابلیت استفاده، در خود جای دهد.
برای فعال کردن اندازه فونت 200٪، مراحل زیر را دنبال کنید:
- برنامه تنظیمات را باز کنید و به Accessibility > Display size and text بروید.
- برای گزینه اندازه قلم ، همانطور که در تصویر همراه با این بخش نشان داده شده است، روی نماد مثبت (+) ضربه بزنید تا حداکثر تنظیم اندازه قلم فعال شود.
برای اندازههای متن از واحدهای پیکسل کوچک شده (sp) استفاده کنید
به یاد داشته باشید که همیشه اندازه متن را در واحدهای sp مشخص کنید . هنگامی که برنامه شما از واحدهای sp استفاده می کند، Android می تواند اندازه متن مورد نظر کاربر را اعمال کند و آن را به طور مناسب مقیاس دهد.
از واحدهای sp برای لایهبندی استفاده نکنید یا ارتفاع دید را با فرض لایهبندی ضمنی تعریف نکنید: با مقیاسبندی فونت غیرخطی، ابعاد sp ممکن است متناسب نباشد، بنابراین 4sp + 20sp ممکن است با 24sp برابر نباشد.
تبدیل واحدهای پیکسل مقیاس شده (sp).
از TypedValue.applyDimension()
برای تبدیل واحدهای sp به پیکسل و از TypedValue.deriveDimension()
برای تبدیل پیکسل ها به sp استفاده کنید. این روش ها منحنی مقیاس بندی غیرخطی مناسب را به طور خودکار اعمال می کنند.
از معادلات کدگذاری سخت با استفاده از Configuration.fontScale
یا DisplayMetrics.scaledDensity
اجتناب کنید. از آنجایی که مقیاس فونت غیرخطی است، فیلد scaledDensity
دیگر دقیق نیست. فیلد fontScale
باید فقط برای مقاصد اطلاعاتی استفاده شود زیرا فونتها دیگر با یک مقدار اسکالر مقیاسبندی نمیشوند.
از واحدهای sp برای lineHeight استفاده کنید
همیشه android:lineHeight
با استفاده از واحدهای sp به جای dp تعریف کنید، بنابراین ارتفاع خط همراه با متن شما مقیاس شود. در غیر این صورت، اگر متن شما sp است اما lineHeight
شما به صورت dp یا px است، مقیاس نمیشود و تنگ به نظر میرسد. TextView به طور خودکار lineHeight
را تصحیح می کند تا نسبت های مورد نظر شما حفظ شود، اما تنها در صورتی که هر دو textSize
و lineHeight
در واحدهای sp تعریف شده باشند.
دوربین و رسانه
Ultra HDR برای تصاویر
اندروید 14 از تصاویر با محدوده دینامیکی بالا (HDR) پشتیبانی می کند که اطلاعات بیشتری را از حسگر هنگام عکس گرفتن حفظ می کند، که رنگ های زنده و کنتراست بیشتر را امکان پذیر می کند. اندروید از فرمت Ultra HDR استفاده میکند که کاملاً با تصاویر JPEG سازگار است و به برنامهها اجازه میدهد تا به طور یکپارچه با تصاویر HDR تعامل داشته باشند و در صورت نیاز آنها را در محدوده دینامیک استاندارد (SDR) نمایش دهند.
رندر کردن این تصاویر در رابط کاربری در HDR زمانی که برنامه شما استفاده از رابط کاربری HDR را برای پنجره فعالیت خود انتخاب میکند، چه از طریق ورودی مانیفست یا در زمان اجرا با فراخوانی Window.setColorMode()
به طور خودکار توسط چارچوب انجام میشود. همچنین می توانید تصاویر ثابت Ultra HDR فشرده شده را در دستگاه های پشتیبانی شده ضبط کنید. با بازیابی رنگ های بیشتر از حسگر، ویرایش در پست می تواند انعطاف پذیرتر باشد. Gainmap
مرتبط با تصاویر Ultra HDR می تواند برای رندر آنها با استفاده از OpenGL یا Vulkan استفاده شود.
اندروید 14 از تصاویر با محدوده دینامیکی بالا (HDR) پشتیبانی می کند که اطلاعات بیشتری را از حسگر هنگام عکس گرفتن حفظ می کند، که رنگ های زنده و کنتراست بیشتر را امکان پذیر می کند. اندروید از فرمت Ultra HDR استفاده میکند که کاملاً با تصاویر JPEG سازگار است و به برنامهها اجازه میدهد تا به طور یکپارچه با تصاویر HDR تعامل داشته باشند و در صورت نیاز آنها را در محدوده دینامیک استاندارد (SDR) نمایش دهند.
رندر کردن این تصاویر در رابط کاربری در HDR زمانی که برنامه شما استفاده از رابط کاربری HDR را برای پنجره فعالیت خود انتخاب میکند، چه از طریق ورودی مانیفست یا در زمان اجرا با فراخوانی Window.setColorMode()
به طور خودکار توسط چارچوب انجام میشود. همچنین می توانید تصاویر ثابت Ultra HDR فشرده شده را در دستگاه های پشتیبانی شده ضبط کنید. با بازیابی رنگ های بیشتر از حسگر، ویرایش در پست می تواند انعطاف پذیرتر باشد. Gainmap
مرتبط با تصاویر Ultra HDR می تواند برای رندر آنها با استفاده از OpenGL یا Vulkan استفاده شود.
زوم، فوکوس، Postview و موارد دیگر در پسوند دوربین
Android 14 افزونههای دوربین را ارتقا و بهبود میبخشد، به برنامهها اجازه میدهد تا زمانهای پردازش طولانیتری را مدیریت کنند، که با استفاده از الگوریتمهای محاسباتی فشرده مانند عکاسی در نور کم در دستگاههای پشتیبانیشده، تصاویر بهبودیافته را ممکن میسازد. این ویژگی ها هنگام استفاده از قابلیت های افزونه دوربین، تجربه قوی تری را به کاربران می دهد. نمونه هایی از این پیشرفت ها عبارتند از:
- تخمین تأخیر پردازش عکسبرداری پویا برآوردهای تأخیر ثبت عکس را بر اساس شرایط فعلی صحنه و محیط ارائه می دهد. برای دریافت یک شی
StillCaptureLatency
که دارای دو روش تخمین تأخیر است،CameraExtensionSession.getRealtimeStillCaptureLatency()
را فراخوانی کنید. متدgetCaptureLatency()
تاخیر تخمینی بینonCaptureStarted
وonCaptureProcessStarted()
را برمی گرداند و متدgetProcessingLatency()
تاخیر تخمینی بینonCaptureProcessStarted()
و فریم پردازش شده نهایی موجود را برمی گرداند. - پشتیبانی از تماسهای پیشروی ضبط بهگونهای که برنامهها میتوانند پیشرفت فعلی عملیات پردازش طولانیمدت را نشان دهند. میتوانید بررسی کنید که آیا این ویژگی با
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
در دسترس است یا خیر، و در صورت وجود، پاسخ تماسonCaptureProcessProgressed()
پیادهسازی میکنید که دارای پیشرفت (از 0 تا 100) به عنوان پارامتر است. فراداده ویژه برنامه افزودنی، مانند
CaptureRequest.EXTENSION_STRENGTH
برای شماره گیری در مقدار افکت افزونه، مانند میزان تاری پس زمینه باEXTENSION_BOKEH
.ویژگی Postview برای Still Capture در پسوندهای دوربین، که تصویری با پردازش کمتر سریعتر از تصویر نهایی ارائه می دهد. اگر یک برنامه افزودنی تأخیر پردازش را افزایش داده باشد، میتوان یک تصویر پسنمایش بهعنوان جایبانی برای بهبود UX ارائه کرد و بعداً برای تصویر نهایی جایگزین شد. می توانید بررسی کنید که آیا این ویژگی با
CameraExtensionCharacteristics.isPostviewAvailable
موجود است یا خیر. سپس می توانید یکOutputConfiguration
بهExtensionSessionConfiguration.setPostviewOutputConfiguration
ارسال کنید.پشتیبانی از
SurfaceView
که امکان یک مسیر رندر پیش نمایش بهینه تر و کم مصرف تر را فراهم می کند.پشتیبانی از ضربه برای فوکوس و زوم در طول استفاده از برنامه افزودنی.
زوم درون سنسور
وقتی REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
در CameraCharacteristics
حاوی SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
است، برنامه شما میتواند از قابلیتهای حسگر پیشرفته استفاده کند تا یک جریان RAW برش داده شده، با استفاده از یک جریان RAW، از همان فیلد CaptureRequest
استفاده کند CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
. با اجرای کنترل های لغو درخواست، دوربین به روز شده کنترل زوم را حتی قبل از آماده شدن سایر کنترل های دوربین به کاربران می دهد.
صدای USB بدون اتلاف
اندروید 14 از فرمتهای صوتی بدون اتلاف برای تجربه در سطح دوستداران صوتی از طریق هدستهای سیمی USB پشتیبانی میکند. میتوانید از یک دستگاه USB برای ویژگیهای میکسر ترجیحی آن پرس و جو کنید، یک شنونده را برای تغییرات در ویژگیهای میکسر ترجیحی ثبت کنید، و ویژگیهای میکسر را با استفاده از کلاس AudioMixerAttributes
پیکربندی کنید. این کلاس فرمت، مانند ماسک کانال، نرخ نمونه و رفتار میکسر صدا را نشان می دهد. این کلاس امکان ارسال مستقیم صدا را بدون میکس، تنظیم صدا یا جلوه های پردازشی را فراهم می کند.
بهره وری توسعه دهندگان و ابزار
مدیر اعتبار
Android 14 Credential Manager را بهعنوان یک API پلتفرم اضافه میکند، با پشتیبانی اضافی به دستگاههای Android 4.4 (سطح API 19) از طریق کتابخانه Jetpack با استفاده از خدمات Google Play. هدف مدیر اعتبارنامه این است که ورود به سیستم را برای کاربران با APIهایی که اعتبارنامه ها را با ارائه دهندگان اعتبار پیکربندی شده توسط کاربر بازیابی و ذخیره می کنند، آسان کند. Credential Manager از چندین روش ورود به سیستم، از جمله نام کاربری و رمز عبور، کلیدهای عبور، و راه حل های ورود به سیستم فدرال (مانند ورود با Google) در یک API پشتیبانی می کند.
کلیدهای عبور مزایای زیادی دارند. برای مثال، کلیدهای عبور بر اساس استانداردهای صنعتی ساخته شدهاند ، میتوانند در سیستمعاملهای مختلف و اکوسیستمهای مرورگر کار کنند و میتوانند هم با وبسایتها و هم با برنامهها استفاده شوند.
برای اطلاعات بیشتر، به مستندات مدیریت اعتبار و کلیدهای عبور و پست وبلاگ درباره مدیر اعتبار و کلیدهای عبور مراجعه کنید.
Health Connect
Health Connect یک مخزن روی دستگاه برای داده های سلامت و تناسب اندام کاربر است. این به کاربران اجازه می دهد تا داده ها را بین برنامه های مورد علاقه خود به اشتراک بگذارند، با یک مکان واحد برای کنترل داده هایی که می خواهند با این برنامه ها به اشتراک بگذارند.
در دستگاههایی که نسخههای اندرویدی قبل از Android 14 دارند، Health Connect برای دانلود به عنوان یک برنامه در فروشگاه Google Play در دسترس است. با شروع اندروید 14، Health Connect بخشی از پلتفرم است و بهروزرسانیها را از طریق بهروزرسانیهای سیستم Google Play بدون نیاز به دانلود جداگانه دریافت میکند. با این کار، Health Connect میتواند بهطور مکرر بهروزرسانی شود و برنامههای شما میتوانند متکی باشند که Health Connect در دستگاههای دارای Android نسخه ۱۴ یا بالاتر در دسترس است. کاربران میتوانند با کنترلهای حریم خصوصی که در تنظیمات سیستم یکپارچه شدهاند، از تنظیمات دستگاه خود به Health Connect دسترسی داشته باشند.
Health Connect شامل چندین ویژگی جدید در اندروید 14 است، مانند مسیرهای ورزشی، که به کاربران امکان می دهد مسیری از تمرین خود را به اشتراک بگذارند که می تواند بر روی نقشه تجسم شود. مسیر به عنوان لیستی از مکانهای ذخیره شده در یک پنجره زمانی تعریف میشود و برنامه شما میتواند مسیرها را در جلسات تمرین وارد کند و آنها را به هم گره بزند. برای اطمینان از اینکه کاربران کنترل کاملی بر این داده های حساس دارند، کاربران باید به اشتراک گذاری مسیرهای فردی با سایر برنامه ها را اجازه دهند.
برای اطلاعات بیشتر، به مستندات Health Connection و پست وبلاگ در مورد چه چیزی در سلامت Android جدید است مراجعه کنید.
به روز رسانی OpenJDK 17
Android 14 به کار تازه کردن کتابخانههای اصلی Android ادامه میدهد تا با ویژگیهای جدیدترین نسخه OpenJDK LTS، از جمله بهروزرسانیهای کتابخانه و پشتیبانی از زبان جاوا 17 برای توسعهدهندگان برنامهها و پلتفرمها، هماهنگ شود.
ویژگی ها و بهبودهای زیر گنجانده شده است:
- تقریباً 300 کلاس
java.base
به پشتیبانی جاوا 17 به روز شد. - بلوک های متنی که رشته های چند خطی را به زبان برنامه نویسی جاوا معرفی می کند.
- تطبیق الگو برای instanceof ، که به یک شی اجازه می دهد تا بدون هیچ متغیر اضافی در یک
instanceof
یک نوع خاص در نظر گرفته شود. - کلاسهای مهر و موم شده ، که به شما امکان میدهند کلاسها و رابطهایی را که میتوانند آنها را گسترش یا پیادهسازی کنند محدود کنید.
به لطف بهروزرسانیهای سیستم Google Play (Project Mainline)، بیش از 600 میلیون دستگاه برای دریافت آخرین بهروزرسانیهای Android Runtime (ART) فعال هستند که شامل این تغییرات میشود. این بخشی از تعهد ما برای دادن محیطی سازگارتر و امنتر به برنامهها در سراسر دستگاهها و ارائه ویژگیها و قابلیتهای جدید به کاربران مستقل از نسخههای پلتفرم است.
جاوا و OpenJDK علائم تجاری یا علائم تجاری ثبت شده Oracle و/یا شرکت های وابسته به آن هستند.
بهبود برای فروشگاه های برنامه
Android 14 چندین API PackageInstaller
را معرفی می کند که به فروشگاه های برنامه اجازه می دهد تا تجربه کاربری خود را بهبود بخشند.
قبل از دانلود، تأیید نصب را درخواست کنید
نصب یا بهروزرسانی یک برنامه ممکن است به تأیید کاربر نیاز داشته باشد. به عنوان مثال، هنگامی که نصب کننده ای که از مجوز REQUEST_INSTALL_PACKAGES
استفاده می کند، سعی می کند یک برنامه جدید را نصب کند. در نسخههای قبلی اندروید، فروشگاههای برنامه فقط میتوانند تأیید کاربر را پس از نوشتن فایلهای APK در جلسه نصب و انجام جلسه درخواست کنند.
با شروع Android 14، متد requestUserPreapproval()
به نصبکنندگان این امکان را میدهد تا قبل از انجام جلسه نصب درخواست تأیید کاربر کنند. این بهبود به فروشگاه برنامه اجازه میدهد دانلود هر فایل APK را تا زمانی که نصب توسط کاربر تأیید شود به تعویق بیاندازد. علاوه بر این، هنگامی که کاربر نصب را تأیید کرد، فروشگاه برنامه میتواند برنامه را در پسزمینه دانلود و نصب کند بدون اینکه کاربر مزاحم شود.
مسئولیت به روز رسانی های آینده را به عهده بگیرید
متد setRequestUpdateOwnership()
به نصب کننده اجازه می دهد تا به سیستم نشان دهد که قصد دارد مسئول به روز رسانی های بعدی برنامه ای باشد که در حال نصب است. این قابلیت اجرای مالکیت بهروزرسانی را فعال میکند، به این معنی که فقط مالک بهروزرسانی مجاز است بهروزرسانیهای خودکار را برای برنامه نصب کند. اجرای مالکیت بهروزرسانی کمک میکند تا اطمینان حاصل شود که کاربران بهروزرسانیها را فقط از فروشگاه برنامه مورد انتظار دریافت میکنند.
هر نصبکننده دیگری، از جمله کسانی که از مجوز INSTALL_PACKAGES
استفاده میکنند، باید تأیید صریح کاربر را برای نصب بهروزرسانی دریافت کنند. اگر کاربری تصمیم بگیرد بهروزرسانی را از منبع دیگری ادامه دهد، مالکیت بهروزرسانی از بین میرود.
برنامهها را در زمانهای کمتر بهروزرسانی کنید
فروشگاههای برنامه معمولاً میخواهند از بهروزرسانی برنامهای که به طور فعال در حال استفاده است اجتناب کنند، زیرا این امر منجر به از بین رفتن فرآیندهای در حال اجرا برنامه میشود، که به طور بالقوه کاری را که کاربر انجام میداد قطع میکند.
با شروع Android 14، InstallConstraints
API راهی را به نصبکنندگان میدهد تا اطمینان حاصل کنند که بهروزرسانیهای برنامهشان در یک لحظه مناسب انجام میشود. به عنوان مثال، یک فروشگاه برنامه می تواند متد commitSessionAfterInstallConstraintsAreMet()
را فراخوانی کند تا مطمئن شود که به روز رسانی تنها زمانی انجام می شود که کاربر دیگر با برنامه مورد نظر تعامل نداشته باشد.
یکپارچه تقسیم های اختیاری را نصب کنید
با تقسیمبندی APK، ویژگیهای یک برنامه را میتوان در فایلهای APK جداگانه به جای یک APK یکپارچه ارائه کرد. Split APK به فروشگاههای برنامه اجازه میدهد تا تحویل اجزای مختلف برنامه را بهینه کنند. به عنوان مثال، فروشگاه های برنامه ممکن است بر اساس ویژگی های دستگاه مورد نظر بهینه سازی کنند. PackageInstaller
API از زمان معرفی آن در سطح 22 API از تقسیمات پشتیبانی می کند.
در اندروید 14، متد setDontKillApp()
به نصب کننده اجازه می دهد تا نشان دهد که فرآیندهای در حال اجرا برنامه نباید در هنگام نصب اسپلیت های جدید از بین بروند. فروشگاه های برنامه می توانند از این ویژگی برای نصب یکپارچه ویژگی های جدید یک برنامه در زمانی که کاربر از برنامه استفاده می کند استفاده کنند.
بستههای فراداده برنامه
با شروع Android 14، نصبکننده بسته Android به شما امکان میدهد ابردادههای برنامه مانند شیوههای ایمنی داده را برای درج در صفحات فروشگاه برنامه مانند Google Play مشخص کنید .
تشخیص زمانی که کاربران از دستگاه عکس می گیرند
برای ایجاد یک تجربه استانداردتر برای تشخیص اسکرین شات ها، اندروید 14 یک API تشخیص اسکرین شات حفظ حریم خصوصی را معرفی می کند. این API به برنامهها اجازه میدهد تا تماسهای برگشتی را بر اساس هر فعالیت ثبت کنند. این تماسهای برگشتی فراخوانی میشوند و زمانی که کاربر یک عکس از صفحه میگیرد در حالی که آن فعالیت قابل مشاهده است، به کاربر اطلاع داده میشود.
تجربه کاربری
اقدامات سفارشی اشتراکگذاری و رتبهبندی بهبود یافته
Android 14 اشتراکگذاری سیستم را بهروزرسانی میکند تا از اقدامات برنامه سفارشی و نتایج پیشنمایش آموزندهتر برای کاربران پشتیبانی کند.
افزودن اقدامات سفارشی
با Android 14، برنامه شما میتواند اقدامات سفارشی را به صفحه اشتراک سیستمی که فراخوانی میکند اضافه کند .
بهبود رتبه بندی اهداف اشتراک مستقیم
Android 14 از سیگنالهای بیشتری از برنامهها برای تعیین رتبهبندی اهداف اشتراک مستقیم استفاده میکند تا نتایج مفیدتری برای کاربر ارائه دهد. برای ارائه مفیدترین سیگنال برای رتبهبندی، راهنمای بهبود رتبهبندی اهداف اشتراک مستقیم خود را دنبال کنید. برنامه های ارتباطی همچنین می توانند استفاده از میانبر برای پیام های خروجی و دریافتی را گزارش کنند .
پشتیبانی از انیمیشن های داخلی و سفارشی برای Predictive Back
اندروید 13 انیمیشن پیش بینی بازگشت به خانه را پشت گزینه توسعه دهنده معرفی کرد. هنگامی که در یک برنامه پشتیبانی شده با فعال بودن گزینه توسعه دهنده استفاده می شود، کشیدن انگشت به عقب انیمیشنی را نشان می دهد که نشان می دهد حرکت برگشت از برنامه به صفحه اصلی خارج می شود.
Android 14 شامل چندین بهبود و راهنمایی جدید برای Predictive Back است:
- میتوانید
android:enableOnBackInvokedCallback=true
برای انتخاب انیمیشنهای پیشبینیکننده سیستم در هر فعالیت به جای کل برنامه تنظیم کنید. - انیمیشنهای سیستمی جدیدی را برای همراهی انیمیشن بازگشت به خانه از Android 13 اضافه کردهایم. انیمیشنهای سیستمی جدید متقاطع و متقاطع هستند که پس از مهاجرت به Predictive Back به صورت خودکار دریافت میکنید.
- ما انیمیشنهای Material Component جدید را برای صفحات پایین ، صفحات جانبی و جستجو اضافه کردهایم.
- ما راهنمای طراحی برای ایجاد انیمیشنها و انتقالهای درونبرنامه سفارشی ایجاد کردهایم.
- ما API های جدیدی را برای پشتیبانی از انیمیشن های انتقال درون برنامه ای سفارشی اضافه کرده ایم:
-
handleOnBackStarted
،handleOnBackProgressed
،handleOnBackCancelled
in
OnBackPressedCallback
-
onBackStarted
،onBackProgressed
،onBackCancelled
in
OnBackAnimationCallback
- از
overrideActivityTransition
به جایoverridePendingTransition
برای ترانزیشن هایی استفاده کنید که با کشیدن انگشت کاربر به عقب پاسخ می دهند.
-
با این نسخه پیشنمایش اندروید 14، تمام ویژگیهای Predictive Back پشت یک گزینه توسعهدهنده باقی میماند. راهنمای برنامهنویس برای انتقال برنامهتان به پیشبینی ، و همچنین راهنمای توسعهدهنده ایجاد انتقالهای سفارشی درونبرنامه را ببینید.
تولیدکننده دستگاه صفحه بزرگ برای هر برنامه لغو می شود
لغو هر برنامه به سازندگان دستگاه امکان می دهد تا رفتار برنامه ها را در دستگاه های صفحه بزرگ تغییر دهند. به عنوان مثال، لغو FORCE_RESIZE_APP
به سیستم دستور میدهد تا اندازه برنامه را برای اندازهگیری ابعاد نمایش تغییر دهد (جلوگیری از حالت سازگاری با اندازه) حتی اگر resizeableActivity="false"
در مانیفست برنامه تنظیم شده باشد.
لغوها برای بهبود تجربه کاربر در صفحه نمایش های بزرگ در نظر گرفته شده است.
ویژگیهای مانیفست جدید شما را قادر میسازد برخی از لغوهای سازنده دستگاه را برای برنامه خود غیرفعال کنید.
صفحه نمایش بزرگ کاربر در هر برنامه لغو می شود
Per-app overrides change the behavior of apps on large screen devices. For example, the OVERRIDE_MIN_ASPECT_RATIO_LARGE
device manufacturer override sets the app aspect ratio to 16:9 regardless of the app's configuration.
Android 14 QPR1 enables users to apply per‑app overrides by means of a new settings menu on large screen devices.
اشتراک گذاری صفحه نمایش برنامه
应用屏幕共享功能让用户能够在录制屏幕内容期间共享应用窗口,而非整个设备屏幕。
使用应用屏幕共享时,状态栏、导航栏、通知和其他系统界面元素会从共享显示屏中排除。系统只会分享所选应用的内容。
应用屏幕共享可让用户运行多个应用,但仅限单个应用共享内容,从而提高效率和隐私性。
پاسخ هوشمند مبتنی بر LLM در Gboard در Pixel 8 Pro
در دستگاههای Pixel 8 Pro دارای ویژگی دسامبر، توسعهدهندگان میتوانند پاسخهای هوشمند با کیفیت بالاتر را در Gboard که توسط مدلهای زبان بزرگ (LLM) روی دستگاه اجرا میشوند در Google Tensor امتحان کنند.
این ویژگی به عنوان یک پیش نمایش محدود برای انگلیسی ایالات متحده در WhatsApp، Line و KakaoTalk در دسترس است. برای این کار باید از دستگاه Pixel 8 Pro با Gboard به عنوان صفحه کلید استفاده کنید.
برای امتحان کردن، ابتدا این ویژگی را در تنظیمات > گزینههای برنامهنویس > تنظیمات AiCore > فعال کردن Aicore Persistent فعال کنید.
سپس، مکالمهای را در یک برنامه پشتیبانیشده باز کنید تا پاسخ هوشمند مبتنی بر LLM را در نوار پیشنهادی Gboard در پاسخ به پیامهای دریافتی ببینید.
گرافیک
مسیرها قابل پرس و جو و درون یابی هستند
Android's Path
API مکانیزمی قدرتمند و منعطف برای ایجاد و رندر گرافیک برداری است، با قابلیت استروک یا پر کردن یک مسیر، ساخت یک مسیر از قسمت های خط یا منحنی های درجه دوم یا مکعب، انجام عملیات بولی برای به دست آوردن اشکال پیچیده تر یا همه موارد. از اینها به طور همزمان یکی از محدودیت ها توانایی یافتن آنچه در واقع در یک شی Path وجود دارد است. درونیات شی پس از ایجاد برای تماس گیرندگان مبهم است.
برای ایجاد یک Path
، متدهایی مانند moveTo()
، lineTo()
و cubicTo()
را فراخوانی می کنید تا بخش های مسیر را اضافه کنید. اما هیچ راهی برای پرسیدن این مسیر وجود ندارد، بنابراین شما باید آن اطلاعات را در زمان ایجاد حفظ کنید.
با شروع اندروید 14، میتوانید مسیرها را جستجو کنید تا بفهمید داخل آنها چیست. ابتدا باید یک شی PathIterator
با استفاده از Path.getPathIterator
API دریافت کنید:
کاتلین
val path = Path().apply { moveTo(1.0f, 1.0f) lineTo(2.0f, 2.0f) close() } val pathIterator = path.pathIterator
جاوا
Path path = new Path(); path.moveTo(1.0F, 1.0F); path.lineTo(2.0F, 2.0F); path.close(); PathIterator pathIterator = path.getPathIterator();
در مرحله بعد، میتوانید PathIterator
را فراخوانی کنید تا قسمتها را یک به یک تکرار کند و تمام دادههای لازم برای هر بخش را بازیابی کند. این مثال از اشیاء PathIterator.Segment
استفاده می کند که داده ها را برای شما بسته بندی می کند:
کاتلین
for (segment in pathIterator) { println("segment: ${segment.verb}, ${segment.points}") }
جاوا
while (pathIterator.hasNext()) { PathIterator.Segment segment = pathIterator.next(); Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints()); }
PathIterator
همچنین دارای یک نسخه غیر تخصیص دهنده از next()
است که در آن می توانید بافر را برای نگهداری داده های نقطه ارسال کنید.
یکی از موارد مهم استفاده از کوئری داده های Path
، درون یابی است. برای مثال، ممکن است بخواهید بین دو مسیر مختلف متحرک (یا شکلبندی ) کنید. برای سادهتر کردن این مورد، اندروید 14 متد interpolate()
را در Path
نیز شامل میشود. با فرض اینکه دو مسیر ساختار داخلی یکسانی دارند، متد interpolate()
یک Path
جدید با آن نتیجه درون یابی ایجاد می کند. این مثال مسیری را برمی گرداند که شکل آن در نیمه راه است (یک درونیابی خطی 0.5) بین path
و otherPath
:
کاتلین
val interpolatedResult = Path() if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, .5f, interpolatedResult) }
جاوا
Path interpolatedResult = new Path(); if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, 0.5F, interpolatedResult); }
کتابخانه مسیر گرافیکی Jetpack API های مشابهی را برای نسخه های قبلی اندروید نیز فعال می کند.
مش های سفارشی با سایه زن های راس و قطعه
اندروید مدتهاست که از ترسیم مشهای مثلثی با سایهزنی سفارشی پشتیبانی میکند، اما قالب مش ورودی به چند ترکیب ویژگی از پیش تعریفشده محدود شده است. اندروید 14 پشتیبانی از مش های سفارشی را اضافه می کند که می توانند به صورت مثلث یا نوارهای مثلثی تعریف شوند و به صورت اختیاری می توانند ایندکس شوند. این مشها با ویژگیهای سفارشی ، گامهای راس، متغیر ، و سایهزنهای راس و قطعه نوشته شده در AGSL مشخص میشوند.
سایهزن رأس، تغییراتی مانند موقعیت و رنگ را تعریف میکند، در حالی که سایهزن قطعه میتواند بهطور اختیاری رنگ پیکسل را مشخص کند، معمولاً با استفاده از تغییرات ایجاد شده توسط سایهزن رأس. اگر رنگ توسط shader قطعه ارائه شود، سپس با استفاده از حالت ترکیبی انتخاب شده هنگام کشیدن مش، با رنگ فعلی Paint
ترکیب می شود. برای انعطاف بیشتر، میتوان لباسهای یکنواخت را به سایهزنهای قطعه و رأس منتقل کرد.
رندر بافر سخت افزاری برای Canvas
برای کمک به استفاده از Canvas
API Android برای ترسیم شتاب سختافزاری به یک HardwareBuffer
، Android 14 HardwareBufferRenderer
را معرفی میکند. این API به ویژه زمانی مفید است که مورد استفاده شما شامل ارتباط با ترکیب کننده سیستم از طریق SurfaceControl
برای ترسیم با تأخیر کم باشد.