نمای کلی ویژگی ها و API ها

اندروید 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

有 30 亿人在使用区分性别的语言,此类语言的语法类别(例如名词、动词、形容词和介词)会根据您交谈所涉及的人或物的性别而变化。传统上,许多区分性别的语言使用阳性语法性别作为默认或通用性别。

以错误的语法性别来称呼用户,例如以阳性语法性别来称呼女性,可能会对她们的表现和态度产生负面影响。相比之下,界面语言如果能正确反映用户的语法性别,就可以提高用户互动度,并提供更个性化、更自然的用户体验。

为帮助您针对区分性别的语言构建以用户为中心的界面,Android 14 引入了 Grammatical Inflection API,让您无需重构应用便能添加对语法性别的支持。

ترجیحات منطقه ای

用户可通过地区偏好设置对温度单位、一周的第一天和编号系统进行个性化设置。居住在美国的欧洲用户可能更希望使用摄氏度,而不是华氏度,并且希望应用将星期一视为一周的开始,而不是像美国那样默认从星期日开始。

新 Android 设置菜单包含这些偏好设置,使用户能够在一个位置集中发现这些应用更改偏好设置。这些偏好设置在备份和恢复设备后也会保持不变。多个 API 和 intent(例如 getTemperatureUnitgetFirstDayOfWeek)会为您的应用授予读取权限来访问用户偏好设置,因此您的应用可以调整其显示信息的方式。您还可以在 ACTION_LOCALE_CHANGED 上注册 BroadcastReceiver,以便在地区偏好设置发生更改时处理语言区域配置更改。

如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和输入法 > 地区偏好设置

Android 系统设置中的地区偏好设置界面。
Android 系统中地区偏好设置的温度选项 设置。

قابلیت دسترسی

مقیاس بندی فونت غیر خطی تا 200٪

با شروع اندروید 14، این سیستم از مقیاس بندی فونت تا 200% پشتیبانی می کند، گزینه های دسترسی اضافی را به کاربران کم بینا ارائه می دهد که با دستورالعمل های دسترسی به محتوای وب (WCAG) مطابقت دارد.

برای جلوگیری از بزرگ شدن عناصر متنی بزرگ روی صفحه، سیستم یک منحنی مقیاس‌بندی غیرخطی اعمال می‌کند. این استراتژی مقیاس‌بندی به این معنی است که متن بزرگ به اندازه متن کوچک‌تر مقیاس نمی‌شود. مقیاس‌بندی غیرخطی فونت به حفظ سلسله‌مراتب متناسب بین عناصر با اندازه‌های مختلف کمک می‌کند و در عین حال مشکلات مربوط به مقیاس‌گذاری خطی متن را در درجات بالا کاهش می‌دهد (مانند قطع شدن متن یا متنی که به دلیل اندازه نمایش بسیار بزرگ خواندن آن سخت‌تر می‌شود).

برنامه خود را با مقیاس بندی فونت غیرخطی آزمایش کنید

حداکثر اندازه فونت را در تنظیمات دسترسی دستگاه فعال کنید تا برنامه خود را آزمایش کنید.

اگر قبلاً از واحدهای پیکسل های مقیاس شده (sp) برای تعریف اندازه متن استفاده می کنید، این گزینه های اضافی و بهبودهای مقیاس بندی به طور خودکار روی متن در برنامه شما اعمال می شوند. با این حال، همچنان باید تست UI را با حداکثر اندازه فونت فعال (200%) انجام دهید تا مطمئن شوید که برنامه شما اندازه فونت را به درستی اعمال می‌کند و می‌تواند اندازه فونت‌های بزرگ‌تر را بدون تأثیرگذاری بر قابلیت استفاده، در خود جای دهد.

برای فعال کردن اندازه فونت 200٪، مراحل زیر را دنبال کنید:

  1. برنامه تنظیمات را باز کنید و به Accessibility > Display size and text بروید.
  2. برای گزینه اندازه قلم ، همانطور که در تصویر همراه با این بخش نشان داده شده است، روی نماد مثبت (+) ضربه بزنید تا حداکثر تنظیم اندازه قلم فعال شود.

برای اندازه‌های متن از واحدهای پیکسل کوچک شده (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 برای تصاویر

标准动态范围 (SDR) 与高动态范围 (HDR) 图片质量对比示意图。

Android 14 新增了对高动态范围 (HDR) 图片的支持,可在拍摄照片时保留更多来自传感器的信息,从而实现鲜艳的色彩和更高的对比度。Android 使用 Ultra HDR 格式,该格式与 JPEG 图片完全向后兼容,可让应用与 HDR 图片无缝互操作,并根据需要以标准动态范围 (SDR) 显示这些图片。

当您的应用选择为其 activity 窗口使用 HDR 界面(通过清单条目或通过在运行时调用 Window.setColorMode())时,框架会自动在界面中以 HDR 格式渲染这些图片。您还可以在受支持的设备上拍摄压缩的 Ultra HDR 静态图片。从传感器中恢复的颜色越多,后期编辑的灵活性就越高。与 Ultra HDR 图片关联的 Gainmap 可用于使用 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 که امکان یک مسیر رندر پیش نمایش بهینه تر و کم مصرف تر را فراهم می کند.

  • پشتیبانی از ضربه برای فوکوس و زوم در طول استفاده از برنامه افزودنی.

زوم درون سنسور

CameraCharacteristics 中的 REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE 包含 SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW 时,您的应用可以使用高级传感器功能,将剪裁后的 RAW 数据流的像素与全视野范围相同,方法是将 CaptureRequest 与将数据流用例设置为 CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW 的 RAW 目标搭配使用。通过实现请求替换控件,更新后的相机可让用户在其他相机控件准备就绪之前使用缩放控件。

صدای USB بدون اتلاف

Android 14 gains support for lossless audio formats for audiophile-level experiences over USB wired headsets. You can query a USB device for its preferred mixer attributes, register a listener for changes in preferred mixer attributes, and configure mixer attributes using the AudioMixerAttributes class. This class represents the format, such as channel mask, sample rate, and behavior of the audio mixer. The class allows for audio to be sent directly, without mixing, volume adjustment, or processing effects.

بهره وری توسعه دهندگان و ابزار

مدیر اعتبار

Android 14 Credential Manager را به‌عنوان یک API پلتفرم اضافه می‌کند، با پشتیبانی اضافی به دستگاه‌های Android 4.4 (سطح API 19) از طریق کتابخانه Jetpack با استفاده از خدمات Google Play. هدف مدیر اعتبارنامه این است که ورود به سیستم را برای کاربران با APIهایی که اعتبارنامه ها را با ارائه دهندگان اعتبار پیکربندی شده توسط کاربر بازیابی و ذخیره می کنند، آسان کند. Credential Manager از چندین روش ورود به سیستم، از جمله نام کاربری و رمز عبور، کلیدهای عبور، و راه حل های ورود به سیستم فدرال (مانند ورود با Google) در یک API پشتیبانی می کند.

کلیدهای عبور مزایای زیادی دارند. برای مثال، کلیدهای عبور بر اساس استانداردهای صنعتی ساخته شده‌اند ، می‌توانند در سیستم‌عامل‌های مختلف و اکوسیستم‌های مرورگر کار کنند و می‌توانند هم با وب‌سایت‌ها و هم با برنامه‌ها استفاده شوند.

برای اطلاعات بیشتر، به مستندات مدیریت اعتبار و کلیدهای عبور و پست وبلاگ درباره مدیر اعتبار و کلیدهای عبور مراجعه کنید.

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,隐私控制功能集成到系统设置中。

用户无需在搭载 Android 14 或更高版本的设备上单独下载应用,即可开始使用 Health Connect。
用户可以通过系统设置控制哪些应用可以访问其健康与健身数据。

Health Connect 在 Android 14 中包含多项新功能,例如锻炼路线,可让用户分享可在地图上直观呈现的锻炼路线。路线定义为在一定时间范围内保存的位置列表,您的应用可以将路线插入锻炼时段,将它们关联起来。为确保用户能够完全控制此类敏感数据,用户必须允许与其他应用共享单个路线。

如需了解详情,请参阅 Health Connect 文档以及有关 Android Health 中的新功能的博文。

به روز رسانی OpenJDK 17

Android 14 将继续更新 Android 的核心库,以与最新 OpenJDK LTS 版本中的功能保持一致,包括适合应用和平台开发者的库更新和 Java 17 语言支持。

其中包含以下功能和改进:

  • 将大约 300 个 java.base 类更新为支持 Java 17。
  • 文本块 - 为 Java 编程语言引入了多行字符串字面量。
  • instanceof 模式匹配:可让对象在 instanceof 中被视为具有特定类型,而无需任何额外的变量。
  • 密封类:允许您限制哪些类和接口可以扩展或实现它们。

得益于 Google Play 系统更新 (Project Mainline),6 亿多台设备能够接收包含这些更改的最新 Android 运行时 (ART) 更新。我们致力于为应用提供更加一致、安全的跨设备环境,并为用户提供独立于平台版本的新功能。

Java 和 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 等应用商店页面上架。

تشخیص زمانی که کاربران از دستگاه عکس می گیرند

为了打造更加标准化的屏幕截图检测体验,Android 14 引入了可保护隐私的屏幕截图检测 API。借助此 API,应用可以按 activity 注册回调。如果用户在该 activity 可见时截取屏幕截图,系统会调用这些回调并通知用户。

تجربه کاربری

اقدامات سفارشی اشتراک‌گذاری و رتبه‌بندی بهبود یافته

Android 14 اشتراک‌گذاری سیستم را به‌روزرسانی می‌کند تا از اقدامات برنامه سفارشی و نتایج پیش‌نمایش آموزنده‌تر برای کاربران پشتیبانی کند.

افزودن اقدامات سفارشی

با Android 14، برنامه شما می‌تواند اقدامات سفارشی را به صفحه اشتراک سیستمی که فراخوانی می‌کند اضافه کند .

تصویری از اقدامات سفارشی در برگه اشتراک.

بهبود رتبه بندی اهداف اشتراک مستقیم

Android 14 از سیگنال‌های بیشتری از برنامه‌ها برای تعیین رتبه‌بندی اهداف اشتراک مستقیم استفاده می‌کند تا نتایج مفیدتری برای کاربر ارائه دهد. برای ارائه مفیدترین سیگنال برای رتبه‌بندی، راهنمای بهبود رتبه‌بندی اهداف اشتراک مستقیم خود را دنبال کنید. برنامه های ارتباطی همچنین می توانند استفاده از میانبر برای پیام های خروجی و دریافتی را گزارش کنند .

ردیف اشتراک مستقیم در برگه اشتراک، همانطور که با 1 نشان داده شده است

پشتیبانی از انیمیشن های داخلی و سفارشی برای Predictive Back

视频:预测性返回动画

Android 13 在开发者选项背后引入了预测性“返回主屏幕”动画。在已启用开发者选项的受支持应用中使用时,滑回手势会显示动画,表明返回手势会使应用退回到主屏幕。

Android 14 包含针对“预测性返回”的多项改进和新指南:

在此 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 در پاسخ به پیام‌های دریافتی ببینید.

Gboard از LLM های روی دستگاه برای ارائه پاسخ های هوشمند با کیفیت بالاتر استفاده می کند.

گرافیک

مسیرها قابل پرس و جو و درون یابی هستند

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

To assist in using Android's Canvas API to draw with hardware acceleration into a HardwareBuffer, Android 14 introduces HardwareBufferRenderer. This API is particularly useful when your use case involves communication with the system compositor through SurfaceControl for low-latency drawing.