Android 6.0 Marshmallow memperkenalkan cara baru bagi pengguna untuk berinteraksi dengan aplikasi melalui aplikasi asisten, seperti Asisten Google. Asisten adalah jendela tingkat atas yang dapat dilihat pengguna untuk mendapatkan tindakan yang relevan secara kontekstual untuk aktivitas saat ini. Tindakan ini dapat mencakup deep link ke aplikasi lain di perangkat.
Pengguna mengaktifkan asisten dengan menekan lama tombol Layar utama atau dengan mengucapkan frasa kunci. Sebagai respons, sistem membuka jendela tingkat atas yang menampilkan tindakan yang secara kontekstual relevan.
Aplikasi asisten, seperti Asisten Google, mengimplementasikan jendela overlay asisten melalui fitur yang disebut Now on Tap, yang berfungsi dengan fungsi tingkat platform Android. Sistem memungkinkan pengguna memilih aplikasi asisten yang memperoleh informasi kontekstual dari aplikasi Anda menggunakan Assist API Android.
Panduan ini menjelaskan cara aplikasi Android menggunakan Assist API Android untuk meningkatkan pengalaman pengguna asisten. Untuk mempelajari cara membuat aplikasi media agar Asisten dapat diluncurkan dan dikontrol, lihat Asisten Google dan aplikasi media.
Menggunakan Asisten
Gambar 1 menggambarkan interaksi pengguna yang khas dengan asisten. Saat pengguna menekan lama tombol Layar utama, callback Assist API dipanggil di aplikasi sumber (langkah 1). Asisten merender jendela overlay (langkah 2 dan 3), lalu pengguna memilih tindakan yang akan dilakukan. Asisten menjalankan tindakan yang dipilih, seperti mengaktifkan intent dengan deep link ke aplikasi restoran (tujuan) (langkah 4).
Pengguna dapat mengonfigurasi asisten dengan memilih Setelan > Aplikasi > Aplikasi Default > Bantuan & input suara. Pengguna dapat mengubah opsi sistem seperti mengakses konten layar sebagai teks dan mengakses screenshot, seperti yang ditunjukkan pada Gambar 2.
Aplikasi sumber
Untuk memastikan aplikasi Anda berfungsi dengan asisten sebagai sumber informasi bagi pengguna, Anda hanya perlu mengikuti praktik terbaik aksesibilitas. Bagian ini menjelaskan cara memberikan informasi tambahan untuk membantu meningkatkan pengalaman pengguna asisten serta skenario yang memerlukan penanganan khusus, seperti Tampilan kustom.
Membagikan informasi tambahan dengan asisten
Selain teks dan screenshot, aplikasi Anda dapat berbagi informasi lainnya dengan asisten. Misalnya, aplikasi musik Anda dapat memilih untuk meneruskan informasi album saat ini sehingga asisten dapat menyarankan tindakan yang lebih cerdas yang disesuaikan dengan aktivitas saat ini. Perhatikan bahwa Assist API tidak menyediakan kontrol media. Untuk menambahkan kontrol media, lihat Asisten Google dan aplikasi media.
Untuk memberikan informasi tambahan kepada asisten, aplikasi Anda menyediakan konteks aplikasi global dengan mendaftarkan pemroses aplikasi dan memberikan informasi khusus aktivitas dengan callback aktivitas seperti yang ditampilkan dalam Gambar 3:
Untuk memberikan konteks aplikasi global, aplikasi akan membuat implementasi
Application.OnProvideAssistDataListener
dan mendaftarkannya
menggunakan registerOnProvideAssistDataListener()
.
Untuk memberikan informasi kontekstual khusus aktivitas, aktivitas
akan mengganti onProvideAssistData()
dan onProvideAssistContent()
.
Dua metode aktivitas dipanggil setelah callback global
opsional dipanggil. Karena callback dieksekusi pada thread utama, callback harus
segera diselesaikan.
Callback dipanggil hanya saat aktivitas berjalan.
Menyediakan konteks
Saat pengguna mengaktifkan asisten tersebut,
onProvideAssistData()
akan dipanggil untuk membangun Intent
ACTION_ASSIST
lengkap dengan semua konteks
aplikasi saat ini yang direpresentasikan sebagai instance AssistStructure
. Anda dapat mengganti metode ini untuk menempatkan
apa pun yang Anda inginkan ke dalam paket agar muncul di
bagian EXTRA_ASSIST_CONTEXT
intent bantuan.
Mendeskripsikan konten
Aplikasi Anda dapat mengimplementasikan onProvideAssistContent()
untuk meningkatkan pengalaman pengguna asisten dengan memberikan referensi terkait konten
yang terkait dengan aktivitas saat ini. Anda dapat mendeskripsikan konten aplikasi menggunakan
kosakata umum yang ditentukan oleh Schema.org
melalui objek JSON-LD. Pada contoh di bawah, aplikasi musik menyediakan
data terstruktur untuk mendeskripsikan album musik yang sedang dilihat pengguna:
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); }
Anda juga dapat meningkatkan pengalaman pengguna dengan implementasi kustom
onProvideAssistContent()
,
yang dapat memberikan manfaat berikut:
- Menyesuaikan intent konten yang disediakan agar lebih mencerminkan konteks tingkat atas dari aktivitas tersebut.
- Memberikan URI konten yang ditampilkan.
- Mengisi
setClipData()
dengan konten minat tambahan yang sedang dilihat pengguna.
Catatan: Aplikasi yang menggunakan implementasi pemilihan teks kustom mungkin perlu
mengimplementasikan onProvideAssistContent()
dan memanggil setClipData()
.
Implementasi default
Jika callback onProvideAssistData()
atau onProvideAssistContent()
tidak diimplementasikan, sistem masih berjalan dan meneruskan informasi yang dikumpulkan secara otomatis ke asisten kecuali jendela saat ini ditandai sebagai aman.
Seperti yang ditunjukkan pada Gambar 3, sistem menggunakan implementasi default onProvideStructure()
dan onProvideVirtualStructure()
untuk
mengumpulkan informasi hierarki tampilan dan teks. Jika tampilan Anda mengimplementasikan gambar teks kustom, ganti onProvideStructure()
untuk memberi asisten teks yang ditampilkan kepada pengguna dengan memanggil setText(CharSequence)
.
Pada umumnya, menerapkan dukungan aksesibilitas memungkinkan asisten memperoleh informasi yang diperlukan. Untuk menerapkan dukungan aksesibilitas, amati praktik terbaik yang dijelaskan dalam Membuat Aplikasi Mudah Diakses, termasuk yang berikut:
- Berikan atribut
android:contentDescription
. - Isi
AccessibilityNodeInfo
untuk tampilan kustom. - Pastikan objek
ViewGroup
kustom mengekspos turunannya dengan benar.
Mengecualikan tampilan dari asisten
Untuk menangani informasi sensitif, aplikasi Anda dapat mengecualikan tampilan saat ini dari asisten
dengan menetapkan parameter tata letak FLAG_SECURE
dari WindowManager
. Anda harus menyetel FLAG_SECURE
secara eksplisit untuk
setiap jendela yang dibuat oleh aktivitas, termasuk dialog. Aplikasi Anda juga dapat menggunakan
setSecure()
untuk mengecualikan
platform dari asisten. Tidak ada mekanisme
global (tingkat aplikasi) untuk mengecualikan semua tampilan dari asisten. Perhatikan
bahwa FLAG_SECURE
tidak menyebabkan callback Assist API berhenti
diaktifkan. Aktivitas yang menggunakan FLAG_SECURE
masih dapat memberikan informasi
secara eksplisit ke aplikasi asisten menggunakan callback yang dijelaskan sebelumnya
dalam panduan ini.
Catatan: Untuk akun perusahaan (Android for Work),
administrator dapat menonaktifkan
pengumpulan data asisten untuk profil kerja menggunakan metode setScreenCaptureDisabled()
dari DevicePolicyManager
API.
Interaksi suara
Callback Assist API juga dipanggil saat pendeteksian frasa kunci. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Voice Actions.
Pertimbangan urutan Z
Seorang asisten menggunakan jendela overlay ringan yang ditampilkan di atas aktivitas saat ini. Karena pengguna dapat mengaktifkan asisten kapan saja, jangan buat jendela peringatan sistem permanen yang mengganggu jendela overlay, seperti yang ditunjukkan pada Gambar 4.
Jika aplikasi Anda menggunakan jendela peringatan sistem, hapus segera karena membiarkannya di layar akan mengganggu pengalaman pengguna.
Aplikasi tujuan
Aplikasi Asisten biasanya memanfaatkan deep linking untuk menemukan aplikasi tujuan. Agar aplikasi Anda menjadi aplikasi tujuan potensial, pertimbangkan untuk menambahkan dukungan deep link. Pencocokan antara konteks pengguna saat ini dan deep link atau tindakan potensial lainnya yang ditampilkan di jendela overlay (ditunjukkan pada langkah 3 pada Gambar 1) dikhususkan untuk implementasi Asisten Google. Misalnya, Aplikasi Asisten Google menggunakan deep linking dan Link Aplikasi untuk mengarahkan traffic ke aplikasi tujuan.
Menerapkan Asisten Anda Sendiri
Anda mungkin ingin mengimplementasikan asisten Anda sendiri. Seperti ditunjukkan dalam Gambar
2, pengguna dapat memilih aplikasi asisten aktif. Aplikasi
asisten harus menyediakan implementasi VoiceInteractionSessionService
dan VoiceInteractionSession
seperti yang ditunjukkan dalam
contoh VoiceInteraction
ini. Asisten juga memerlukan izin BIND_VOICE_INTERACTION
. Asisten kemudian dapat menerima hierarki tampilan dan teks yang direpresentasikan sebagai instance AssistStructure
di onHandleAssist()
.
Asisten menerima screenshot melalui onHandleScreenshot()
.