تکمیل خودکار را با IME و خدمات تکمیل خودکار یکپارچه کنید

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

گردش کار

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

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

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

  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() سرویس تکمیل خودکار شما را فراخوانی می‌کند، درست همانطور که در نسخه‌های قبل از اندروید ۱۱ انجام می‌شود. با این حال، سرویس شما باید متد getInlineSuggestionsRequest() شیء FillRequest ارسالی را فراخوانی کند. این متد InlineSuggestionsRequest ایجاد شده توسط IME را بازیابی می‌کند. InlineSuggestionsRequest مشخص می‌کند که چند پیشنهاد درون‌خطی مورد نیاز است و هر کدام چگونه باید ارائه شوند. اگر IME از پیشنهادهای درون‌خطی پشتیبانی نکند، متد null را برمی‌گرداند.

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