IME 및 자동 완성 서비스와 자동 완성 통합

Android 11부터는 시스템이 추천을 메뉴에 표시하는 대신 키보드 및 기타 입력 방식 편집기(IME)가 자동 완성 추천을 인라인, 추천란 또는 유사한 요소에 표시할 수 있습니다. 이러한 자동 완성 추천에는 비밀번호 또는 신용카드 정보와 같은 개인 비공개 데이터가 포함될 수 있으므로 추천은 사용자가 선택할 때까지 IME에서 숨겨집니다. 이 기능을 사용하려면 IME 및 비밀번호 관리자와 같은 자동 완성 서비스를 업데이트하세요. IME 또는 자동 완성 서비스가 인라인 자동 완성을 지원하지 않으면 추천은 Android 11 이하 버전과 같이 메뉴에 표시됩니다.

워크플로

이 흐름에서 IME는 현재 키보드 또는 기타 입력 편집기를 의미하며 추천 제공자는 자동 완성 추천의 적절한 제공자를 의미합니다. 입력란과 사용자의 설정에 따라 추천 공급자가 플랫폼 또는 자동 완성 서비스일 수 있습니다.

  1. 사용자는 비밀번호 또는 신용카드 입력란과 같이 자동 완성을 트리거하는 입력란에 집중합니다.

  2. 플랫폼은 현재 IME 및 적절한 추천 제공자를 쿼리하여 IME 및 추천 제공자가 인라인 자동 완성을 지원하는지 확인합니다. IME 또는 추천 제공자가 인라인 자동 완성을 지원하지 않는 경우 추천이 표시됨 를 클릭합니다.

  3. 플랫폼은 IME에 추천 요청을 제공하도록 요청합니다. 이 추천은 요청은 표시할 최대 추천 수를 지정하며 는 각 추천 검색어의 프레젠테이션 사양을 제공합니다. 프레젠테이션 사양은 최대 크기, 텍스트 크기, 색상 및 글꼴 데이터 등을 지정하여 추천 제공자가 IME의 디자인과 분위기를 일치시킵니다.

  4. 플랫폼은 추천 제공자에게 요청된 추천 수까지 제공하도록 요청합니다. 각 추천에는 추천의 UI가 포함된 View를 확장하는 콜백이 포함되어 있습니다.

  5. 플랫폼은 추천이 준비되었음을 IME에 알립니다. IME는 콜백 메서드를 호출하여 각 추천의 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"/>

플랫폼은 자동 완성 추천이 필요할 때 IME의 InputMethodService.onCreateInlineSuggestionsRequest() 메서드를 호출합니다. 이 메서드는 반드시 구현해야 합니다. 다음을 지정하여 InlineSuggestionsRequest를 반환합니다.

  • IME가 원하는 추천 수
  • InlinePresentationSpec 이를 사용하여 추천이 표시되는 방식을 정의합니다.

플랫폼에 추천이 있을 때 IME의 onInlineSuggestionsResponse() 메서드를 호출하여 추천이 포함된 InlineSuggestionsResponse를 전달합니다. 이 메서드는 반드시 구현해야 합니다. 구현에서 InlineSuggestionsResponse.getInlineSuggestions()를 호출하여 추천 목록을 가져온 후 InlineSuggestion.inflate() 메서드를 호출하여 각 추천을 확장합니다.

인라인 자동 완성을 지원하도록 자동 완성 서비스 구성

이 섹션에서는 인라인을 지원하도록 자동 완성 서비스를 구성하는 방법을 설명합니다. 자동 완성 앱이 인라인 자동 완성을 지원하지 않는다면 플랫폼은 기본적으로 메뉴에 자동 완성 추천을 표시합니다.

자동 완성 서비스에서 supportsInlinedSuggestions 속성을 true:

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

IME에 자동 완성 추천이 필요할 때 플랫폼은 Android 11 미만 버전에서와 마찬가지로 자동 완성 서비스의 onFillRequest() 메서드를 호출합니다. 그러나 서비스는 전달된 FillRequest 객체의 getInlineSuggestionsRequest() 메서드를 사용하여 IME에서 만든 InlineSuggestionsRequest를 가져옵니다. 이 InlineSuggestionsRequest는 필요한 인라인 추천 수를 지정합니다. 각각 표현되어야 합니다. IME가 인라인 추천을 지원하지 않으면 메서드는 null을 반환합니다.

자동 완성 서비스는 InlineSuggestionsRequest에 요청된 최대 개수까지 InlinePresentation 객체를 만듭니다. 표시 사양은 InlineSuggestionsRequest에서 지정한 크기 제한을 준수해야 합니다. 추천을 IME에 반환하려면 각 추천에 대해 Dataset.Builder.setValue()를 한 번씩 호출합니다. Android 11은 Dataset.Builder.setValue(): 인라인 추천을 지원합니다.