Tối ưu hóa nội dung ngữ cảnh cho Trợ lý

Android 6.0 Marshmallow giới thiệu một cách mới để người dùng tương tác với ứng dụng thông qua trợ lý ứng dụng, chẳng hạn như Google Trợ lý Google. Trợ lý là cửa sổ cấp cao nhất mà người dùng có thể xem để nhận theo ngữ cảnh hành động liên quan đối với hoạt động hiện tại. Những hành động này có thể bao gồm đường liên kết sâu đến các ứng dụng khác trên thiết bị.

Người dùng kích hoạt trợ lý bằng cách nhấn và giữ nút Màn hình chính hoặc bằng cách nói cụm từ khoá. Khi phản hồi, hệ thống sẽ mở một cửa sổ cấp cao nhất hiển thị theo ngữ cảnh hành động liên quan.

Ứng dụng trợ lý, chẳng hạn như Trợ lý Google, triển khai cửa sổ lớp phủ của trợ lý thông qua một có tên Now on Tap, hoạt động với chức năng cấp nền tảng Android. Hệ thống cho phép người dùng chọn một ứng dụng trợ lý. Ứng dụng này sẽ lấy thông tin theo bối cảnh từ ứng dụng của bạn bằng cách sử dụng API Hỗ trợ của Android.

Hướng dẫn này giải thích cách các ứng dụng Android sử dụng API Hỗ trợ của Android để cải thiện trợ lý trải nghiệm người dùng. Tìm hiểu cách tạo một ứng dụng đa phương tiện để Trợ lý có thể chạy và điều khiển, hãy xem phần Trợ lý Google và ứng dụng đa phương tiện.

Sử dụng Trợ lý

Hình 1 minh hoạ một hoạt động tương tác thông thường của người dùng với trợ lý. Khi người dùng nhấn và giữ nút Home (Màn hình chính), các lệnh gọi lại Assist API (API Hỗ trợ) sẽ được gọi trong ứng dụng nguồn (bước 1). Trợ lý kết xuất cửa sổ lớp phủ (bước 2 và 3), rồi người dùng chọn hành động cần thực hiện. Trợ lý thực thi hành động đã chọn, chẳng hạn như kích hoạt ý định bằng đường liên kết sâu đến ứng dụng nhà hàng (destination) (bước 4).

Hình 1. Ví dụ về hoạt động tương tác của Trợ lý với tính năng Now on Tap của ứng dụng Google

Người dùng có thể định cấu hình trợ lý bằng cách chọn Cài đặt > Ứng dụng > Ứng dụng mặc định > Hỗ trợ và nhập bằng giọng nói. Người dùng có thể thay đổi các tuỳ chọn hệ thống như truy cập nội dung màn hình dưới dạng văn bản và truy cập vào ảnh chụp màn hình, như trong Hình 2.

Hình 2. Hỗ trợ và cài đặt nhập bằng giọng nói

Ứng dụng nguồn

Để đảm bảo rằng ứng dụng của bạn hoạt động với trợ lý như một nguồn thông tin cho người dùng, bạn chỉ cần theo dõi giải pháp hỗ trợ tiếp cận . Phần này mô tả cách cung cấp thêm thông tin để giúp cải thiện trải nghiệm người dùng của Trợ lý cũng như các tình huống cần xử lý đặc biệt, chẳng hạn như Thành phần hiển thị tuỳ chỉnh.

Chia sẻ thông tin bổ sung với Trợ lý

Ngoài văn bản và ảnh chụp màn hình, ứng dụng của bạn có thể chia sẻ các thông tin khác mà Trợ lý tìm được. Ví dụ: nhạc của bạn ứng dụng có thể chọn truyền thông tin album hiện tại để trợ lý có thể đề xuất các hành động thông minh hơn phù hợp với hoạt động hiện tại. Lưu ý rằng API Hỗ trợ không cung cấp chức năng điều khiển nội dung nghe nhìn. Để thêm các chế độ điều khiển nội dung nghe nhìn, hãy xem Trợ lý Google và các ứng dụng nghe nhìn.

Để cung cấp thêm thông tin cho trợ lý, ứng dụng của bạn sẽ cung cấp ngữ cảnh ứng dụng chung bằng cách đăng ký trình nghe ứng dụng và cung cấp thông tin cụ thể về hoạt động thông qua các lệnh gọi lại hoạt động như minh hoạ trong Hình 3:

Hình 3. Sơ đồ trình tự vòng đời của API Hỗ trợ

Để cung cấp ngữ cảnh ứng dụng chung, ứng dụng sẽ tạo một phương thức triển khai Application.OnProvideAssistDataListener và đăng ký miền này đang sử dụng registerOnProvideAssistDataListener(). Để cung cấp thông tin theo bối cảnh theo hoạt động cụ thể, hoạt động ghi đè onProvideAssistData()onProvideAssistContent(). Hai phương thức hoạt động này được gọi sau lệnh thoại toàn cục không bắt buộc hệ thống sẽ thực hiện lệnh gọi lại. Vì các lệnh gọi lại thực thi trên luồng chính, nên chúng phải hoàn tất một cách kịp thời. Các lệnh gọi lại chỉ được gọi khi hoạt động đang chạy.

Cung cấp bối cảnh

Khi người dùng kích hoạt trợ lý, onProvideAssistData() được gọi để tạo phiên bản đầy đủ Ý định ACTION_ASSIST với tất cả ngữ cảnh của ứng dụng hiện tại được biểu thị dưới dạng một thực thể của AssistStructure. Bạn có thể ghi đè phương pháp này để đặt bất kỳ thứ gì bạn thích trong gói để xuất hiện trong EXTRA_ASSIST_CONTEXT của ý định hỗ trợ.

Mô tả nội dung

Ứng dụng của bạn có thể triển khai onProvideAssistContent() để cải thiện trải nghiệm người dùng của Trợ lý bằng cách cung cấp các tài liệu tham khảo liên quan đến nội dung liên quan đến hoạt động hiện tại. Bạn có thể mô tả nội dung ứng dụng bằng từ vựng phổ biến do Schema.org xác định thông qua đối tượng JSON-LD. Trong ví dụ dưới đây, ứng dụng âm nhạc cung cấp dữ liệu có cấu trúc để mô tả đĩa nhạc mà người dùng đang lưu trữ đang xem:

Kotlin

override fun onProvideAssistContent(assistContent: AssistContent) {
    super.onProvideAssistContent(assistContent)

    val structuredJson: String = JSONObject()
            .put("@type", "MusicRecording")
            .put("@id", "https://example.com/music/recording")
            .put("name", "Album Title")
            .toString()

    assistContent.structuredData = structuredJson
}

Java

@Override
public void onProvideAssistContent(AssistContent assistContent) {
  super.onProvideAssistContent(assistContent);

  String structuredJson = new JSONObject()
       .put("@type", "MusicRecording")
       .put("@id", "https://example.com/music/recording")
       .put("name", "Album Title")
       .toString();

  assistContent.setStructuredData(structuredJson);
}

Bạn cũng có thể cải thiện trải nghiệm người dùng bằng cách triển khai tuỳ chỉnh onProvideAssistContent(), có thể mang lại các lợi ích sau:

Lưu ý: Các ứng dụng sử dụng cách triển khai lựa chọn văn bản tuỳ chỉnh có thể cần để triển khai onProvideAssistContent() và gọi setClipData().

Cách triển khai mặc định

Nếu không phải onProvideAssistData() hoặc onProvideAssistContent() được triển khai, hệ thống vẫn tiếp tục và truyền hàm thông tin được thu thập tự động cho Trợ lý trừ phi được gắn cờ là bảo mật. Như trong Hình 3, hệ thống sử dụng cách triển khai mặc định của onProvideStructure()onProvideVirtualStructure() để thu thập thông tin văn bản và hệ phân cấp khung hiển thị. Nếu khung hiển thị của bạn triển khai chế độ xem tuỳ chỉnh bản vẽ văn bản, hãy ghi đè onProvideStructure() để cung cấp trợ lý kèm theo văn bản hiển thị cho người dùng bằng cách gọi setText(CharSequence).

Trong hầu hết các trường hợp, việc triển khai hỗ trợ tiếp cận cho phép để có được thông tin cần thiết. Để triển khai tính năng hỗ trợ tiếp cận, thực hiện theo các phương pháp hay nhất được mô tả trong phần Tạo ứng dụng Có thể tiếp cận, bao gồm:

Loại trừ lượt xem khỏi trợ lý

Để xử lý thông tin nhạy cảm, ứng dụng của bạn có thể loại trừ chế độ xem hiện tại khỏi trợ lý bằng cách đặt tham số bố cục FLAG_SECURE của WindowManager. Bạn phải đặt FLAG_SECURE một cách rõ ràng cho mọi cửa sổ do hoạt động tạo ra, bao gồm cả hộp thoại. Ứng dụng của bạn cũng có thể sử dụng setSecure() để loại trừ một nền tảng thông qua Trợ lý. Không có cơ chế chung (cấp ứng dụng) để loại trừ tất cả chế độ xem khỏi trợ lý. Ghi chú rằng FLAG_SECURE không khiến lệnh gọi lại API hỗ trợ dừng đang kích hoạt. Hoạt động sử dụng FLAG_SECURE vẫn có thể vẫn rõ ràng cung cấp thông tin cho ứng dụng trợ lý bằng lệnh gọi lại như mô tả trước đó hướng dẫn này.

Lưu ý: Đối với tài khoản doanh nghiệp (Android for Work), quản trị viên có thể tắt thu thập dữ liệu trợ lý cho hồ sơ công việc bằng cách sử dụng phương thức setScreenCaptureDisabled() của API DevicePolicyManager.

Tương tác bằng giọng nói

Lệnh gọi lại API hỗ trợ cũng được gọi dựa trên cụm từ khoá . Để biết thêm thông tin, hãy xem Giọng nói Tài liệu về Thao tác.

Những điểm cần lưu ý về thứ tự Z

Trợ lý dùng một cửa sổ lớp phủ nhẹ hiển thị ở trên cùng hoạt động hiện tại. Vì người dùng có thể kích hoạt trợ lý bất cứ lúc nào, không tạo vĩnh viễn cửa sổ cảnh báo hệ thống gây trở ngại cho cửa sổ lớp phủ, như minh hoạ trong Hình 4.

Hình 4. Hỗ trợ thứ tự Z của lớp

Nếu ứng dụng của bạn sử dụng cửa sổ cảnh báo hệ thống, hãy gỡ bỏ chúng ngay lập tức vì để chúng trên làm giảm trải nghiệm người dùng.

Ứng dụng đích

Các ứng dụng Trợ lý thường tận dụng tính năng liên kết sâu để tìm các ứng dụng đích. Để giúp một ứng dụng đích tiềm năng, hãy cân nhắc việc thêm tính năng hỗ trợ liên kết sâu. Kiểu khớp giữa ngữ cảnh người dùng hiện tại và các liên kết sâu hoặc các hành động tiềm năng khác được hiển thị trong cửa sổ lớp phủ (hiển thị trong bước 3 trong Hình 1) dành riêng cho việc triển khai Trợ lý Google. Cho ví dụ: Ứng dụng Trợ lý Google sử dụng tính năng liên kết sâu và Đường liên kết ứng dụng để tăng lưu lượng truy cập đến các ứng dụng đích.

Triển khai Trợ lý của riêng bạn

Bạn nên triển khai trợ lý của riêng mình. Như minh hoạ trong Hình 2, người dùng có thể chọn ứng dụng trợ lý đang hoạt động. Chiến lược phát hành đĩa đơn ứng dụng trợ lý phải cung cấp cách triển khai VoiceInteractionSessionServiceVoiceInteractionSession như minh hoạ trong ví dụ về VoiceInteraction này. Ứng dụng này cũng yêu cầu quyền BIND_VOICE_INTERACTION. Sau đó, trợ lý có thể nhận văn bản và hệ phân cấp khung hiển thị được biểu thị dưới dạng thực thể của AssistStructure trong onHandleAssist(). Ứng dụng nhận được ảnh chụp màn hình thông qua onHandleScreenshot().