اندروید 14 ویژگی ها و API های عالی را برای توسعه دهندگان معرفی می کند. موارد زیر به شما کمک می کند تا با ویژگی های برنامه های خود آشنا شوید و با API های مرتبط شروع به کار کنید.
برای فهرست دقیق APIهای اضافه شده، اصلاح شده و حذف شده، گزارش تفاوت API را بخوانید. برای جزئیات بیشتر در مورد APIهای اضافه شده به مرجع Android API مراجعه کنید — برای Android 14، به دنبال APIهایی باشید که در سطح API 34 اضافه شده اند. برای آشنایی با مناطقی که تغییرات پلت فرم ممکن است بر برنامه های شما تأثیر بگذارد، حتماً تغییرات رفتار Android 14 را برای برنامه هایی که Android 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:使用LocaleManager方法中的setOverrideLocaleConfig()和getOverrideLocaleConfig()可以在设备的系统设置中动态更新应用的受支持语言列表。有了这种灵活性,您可以按区域自定义支持的语言列表、运行 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)会为您的应用授予读取权限来访问用户偏好设置,因此您的应用可以调整其显示信息的方式。您还可以在 ACTION_LOCALE_CHANGED 上注册 BroadcastReceiver,以便在地区偏好设置发生更改时处理语言区域配置更改。
如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和输入法 > 地区偏好设置。
دسترسی
مقیاس بندی فونت غیر خطی تا 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,并通过使用 Google Play 服务的 Jetpack 库,向后额外支持 Android 4.4(API 级别 19)设备。Credential Manager 旨在通过 API 使用用户配置的凭据提供程序检索和存储凭据,让用户更轻松地登录。Credential Manager 在单个 API 中支持多种登录方法,包括用户名和密码、通行密钥和联合登录解决方案(如“使用 Google 账号登录”)。
通行密钥具有许多优势。例如,通行密钥是基于业界标准构建的,可在各种不同的操作系统和浏览器生态系统中使用,并且可用于网站和应用。
如需了解详情,请参阅 Credential Manager 和通行密钥文档以及介绍 Credential Manager 和通行密钥的博文。
Health Connect
Health Connect 是用户健康与健身数据的设备端仓库。借助该功能,用户可以在一个位置控制要与这些应用共享哪些数据,并在自己喜爱的应用之间共享数据。
在搭载 Android 14 之前的 Android 版本的设备上,Health Connect 可作为应用从 Google Play 商店下载。从 Android 14 开始,Health Connect 将成为 Android 平台的一部分,并通过 Google Play 系统更新接收更新,而无需单独下载。这样一来,Health Connect 就可以频繁更新,您的应用可以依赖于搭载 Android 14 或更高版本的设备上提供的 Health Connect。用户可以通过设备的“设置”访问 Health Connect,隐私控制功能集成到系统设置中。
Health Connect 在 Android 14 中包含多项新功能,例如锻炼路线,可让用户分享可在地图上直观呈现的锻炼路线。路线定义为在一定时间范围内保存的位置列表,您的应用可以将路线插入锻炼时段,将它们关联起来。为确保用户能够完全控制此类敏感数据,用户必须允许与其他应用共享单个路线。
如需了解详情,请参阅 Health Connect 文档以及有关 Android Health 中的新功能的博文。
به روز رسانی 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
Android 13 在开发者选项背后引入了预测性“返回主屏幕”动画。在已启用开发者选项的受支持应用中使用时,滑回手势会显示动画,表明返回手势会使应用退回到主屏幕。
Android 14 包含针对“预测性返回”的多项改进和新指南:
- 您可设置
android:enableOnBackInvokedCallback=true,以便为每个 activity 选择启用预测性返回系统动画,而不是为整个应用选择启用。 - 我们添加了新的系统动画,以配合 Android 13 中的“返回主屏幕”动画。新的系统动画是跨 activity 和跨任务的,您可在迁移到预测性返回后自动获得该动画。
- 我们为底部动作条、侧边动作条和搜索添加了新的 Material 组件动画。
- 我们制作了有关如何创建自定义应用内动画和转换的设计指南。
- 我们添加了许多新 API 来支持自定义的应用内转换动画:
在此 Android 14 预览版中,所有预测性返回功能都是位于开发者选项背后。请参阅与将您的应用迁移到预测性返回有关的开发者指南,以及与创建自定义应用内转换有关的开发者指南。
تولیدکننده دستگاه صفحه بزرگ برای هر برنامه لغو می شود
借助按应用替换项,设备制造商可以更改应用在大屏设备上的行为。例如,FORCE_RESIZE_APP 替换项会指示系统调整应用大小以适应显示屏尺寸(避免进入尺寸兼容模式),即使在应用清单中设置了 resizeableActivity="false" 也是如此。
替换项旨在改善大屏设备上的用户体验。
借助新的清单属性,您可以为应用停用某些设备制造商替换项。
صفحه نمایش بزرگ کاربر در هر برنامه لغو می شود
لغو هر برنامه رفتار برنامه ها را در دستگاه های صفحه بزرگ تغییر می دهد. برای مثال، لغو OVERRIDE_MIN_ASPECT_RATIO_LARGE سازنده دستگاه، نسبت تصویر برنامه را بدون توجه به پیکربندی برنامه روی 16:9 تنظیم میکند.
Android 14 QPR1 کاربران را قادر میسازد تا با استفاده از منوی تنظیمات جدید در دستگاههای صفحهنمایش بزرگ، نادیدهگیریهای هر برنامه را اعمال کنند.
اشتراک گذاری صفحه نمایش برنامه
借助应用界面共享功能,用户可以在录制屏幕内容时共享应用窗口,而不是整个设备屏幕。
在应用屏幕共享模式下,状态栏、导航栏、通知和其他系统界面元素会从共享显示屏中排除。系统只会分享所选应用的内容。
应用屏幕共享功能可让用户运行多个应用,但将内容共享限制为单个应用,从而提高工作效率并保护隐私。
پاسخ هوشمند مبتنی بر 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 برای ترسیم با تأخیر کم باشد.