ادغام تکمیل خودکار با ویرایشگرهای روش ورودی و سرویس‌های تکمیل خودکار

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

گردش کار

در این جریان، IME به‌معنای صفحه‌کلید فعلی یا ویرایشگر ورودی دیگر است، و ارائه‌دهنده پیشنهاد به‌معنای ارائه‌دهنده مناسب پیشنهاد تکمیل خودکار است. بسته به فیلد ورودی و تنظیمات کاربر، ارائه‌دهنده پیشنهاد ممکن است پلاتفرم یا سرویس تکمیل خودکار باشد.

  1. کاربر روی فیلد ورودی‌ای که تکمیل خودکار را راه‌اندازی می‌کند، مانند فیلد ورودی گذرواژه یا کارت اعتباری، تمرکز می‌کند.

  2. پلاتفرم از IME فعلی و ارائه‌دهنده پیشنهاد مناسب درخواست می‌کند تا ببیند آیا از تکمیل خودکار به‌خط پشتیبانی می‌کنند یا نه. اگر IME یا ارائه‌دهنده پیشنهاد از تکمیل خودکار درون‌خطی پشتیبانی نکند، پیشنهاد در منو نشان داده می‌شود، مانند Android نسخه ۱۰ و پایین‌تر.

  3. پلاتفرم از IME می‌خواهد درخواست پیشنهاد ارائه دهد. این درخواست پیشنهاد، حداکثر تعداد پیشنهادهای قابل‌نمایش را مشخص می‌کند و همچنین مشخصات ارائه را برای هر پیشنهاد ارائه می‌دهد. مشخصات ارائه مواردی مانند حداکثر اندازه، اندازه نوشتار، رنگ‌ها، و داده‌های قلم را مشخص می‌کند و به ارائه‌دهنده پیشنهاد اجازه می‌دهد با ظاهر و حس IME مطابقت داشته باشد.

  4. پلاتفرم از ارائه‌دهنده پیشنهاد می‌خواهد تا حداکثر تعداد پیشنهادات درخواست‌شده را ارائه دهد. هر پیشنهاد شامل یک فراخوانی برگشتی برای باد کردن یک View است که حاوی واسط کاربر پیشنهاد است.

  5. پلاتفرم به IME اطلاع می‌دهد که پیشنهادها آماده هستند. IME با فراخوانی روش callback برای گسترش دادن View هر پیشنهاد، پیشنهادها را نمایش می‌دهد. برای محافظت از اطلاعات خصوصی کاربر، IME در این مرحله نمی‌بیند پیشنهادها چه هستند.

  6. اگر کاربر یکی از پیشنهادها را انتخاب کند، IME به همان روشی مطلع می‌شود که کاربر پیشنهادی را از منوی سیستم انتخاب می‌کند.

بخش‌های زیر نحوه پیکربندی IME یا سرویس تکمیل خودکار را برای پشتیبانی از تکمیل خودکار درون‌خطی شرح می‌دهند.

پیکربندی IME برای پشتیبانی از تکمیل خودکار درون‌خطی

این بخش نحوه پیکربندی IME را برای پشتیبانی از تکمیل خودکار درون‌خطی شرح می‌دهد. اگر IME شما از تکمیل خودکار به‌خط پشتیبانی نمی‌کند، پلاتفرم به‌طور پیش‌فرض پیشنهادهای تکمیل خودکار را در منو نشان می‌دهد.

IME شما باید مشخصه supportsInlinedSuggestions را روی true تنظیم کند:

<input-method
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

وقتی پلاتفرم به پیشنهاد تکمیل خودکار نیاز دارد، روش InputMethodService.onCreateInlineSuggestionsRequest() IME شما را فراخوانی می‌کند. باید این روش را پیاده‌سازی کنید. InlineSuggestionsRequest را برمی‌گرداند که موارد زیر را مشخص می‌کند:

  • تعداد پیشنهادهایی که IME شما می‌خواهد.
  • **یک InlinePresentationSpec برای هر پیشنهاد که نحوه ارائه پیشنهاد را تعریف می‌کند.

وقتی پلاتفرم پیشنهادهایی دارد، روش onInlineSuggestionsResponse() IME شما را فراخوانی می‌کند و InlineSuggestionsResponse حاوی پیشنهادها را ارسال می‌کند. باید این روش را پیاده‌سازی کنید. در پیاده‌سازی‌تان، InlineSuggestionsResponse.getInlineSuggestions() را فراخوانی کنید تا فهرست پیشنهادها را دریافت کنید، سپس هر پیشنهاد را با فراخوانی روش InlineSuggestion.inflate() آن گسترش دهید.

پیکربندی سرویس‌های تکمیل خودکار برای پشتیبانی از تکمیل خودکار به‌خط

این بخش نحوه پیکربندی سرویس تکمیل خودکار را برای پشتیبانی از تکمیل خودکار درون‌خطی شرح می‌دهد. اگر برنامه شما از تکمیل خودکار درون‌خطی پشتیبانی نمی‌کند، پلاتفرم به‌طور پیش‌فرض پیشنهادهای تکمیل خودکار را در منو نشان می‌دهد.

سرویس تکمیل خودکار شما باید شاخصه supportsInlinedSuggestions را روی true تنظیم کند:

<autofill-service
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:supportsInlineSuggestions="true"/>

وقتی IME به پیشنهادهای تکمیل خودکار نیاز دارد، پلاتفرم روش onFillRequest() سرویس تکمیل خودکار شما را فراخوانی می‌کند، درست مانند نسخه‌های قدیمی‌تر از Android 11. بااین‌حال، سرویس شما باید روش getInlineSuggestionsRequest() شیء FillRequest ارسال‌شده را فراخوانی کند. این InlineSuggestionsRequest ایجادشده توسط IME را بازیابی می‌کند. InlineSuggestionsRequest مشخص می‌کند چند پیشنهاد درون‌خطی لازم است و هرکدام چطور باید ارائه شود. اگر IME از پیشنهادهای درون‌خطی پشتیبانی نکند، این روش null را برمی‌گرداند.

سرویس تکمیل خودکار شما اشیاء InlinePresentation را تا حداکثر تعداد درخواست‌شده در InlineSuggestionsRequest ایجاد می‌کند. ارائه‌های شما باید از محدودیت‌های اندازه مشخص‌شده توسط InlineSuggestionsRequest پیروی کنند. برای برگرداندن پیشنهادهایتان به IME، برای هر پیشنهاد یک‌بار با Dataset.Builder.setValue() تماس بگیرید. Android 11 نسخه‌هایی از Dataset.Builder.setValue() را برای پشتیبانی از پیشنهادهای درون‌خطی ارائه می‌دهد.