Android 6.0 Marshmallow memperkenalkan cara baru bagi pengguna untuk berinteraksi dengan aplikasi melalui asisten aplikasi, seperti Google Asisten. Asisten adalah jendela tingkat teratas yang dapat dilihat pengguna untuk mendapatkan informasi tindakan yang relevan 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 utama. Sebagai respons, sistem membuka jendela tingkat teratas yang menampilkan secara kontekstual tindakan yang relevan.
Aplikasi asisten, seperti Asisten Google, menerapkan jendela overlay asisten melalui bernama 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 asisten {i>user experience<i}. Untuk mempelajari cara membuat aplikasi media agar Asisten dapat diluncurkan serta mengontrolnya, lihat Asisten Google dan aplikasi media.
Menggunakan Asisten
Gambar 1 menggambarkan interaksi pengguna yang khas dengan asisten. Ketika pengguna menekan lama tombol Beranda, callback Assist API dipanggil di aplikasi sumber (langkah 1). Asisten merender jendela overlay (langkah 2 dan 3), dan kemudian 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 > Panduan & input suara. Pengguna dapat mengubah opsi sistem seperti mengakses konten layar sebagai teks dan mengakses {i>screenshot<i}, seperti yang ditunjukkan pada Gambar 2.
Aplikasi sumber
Untuk memastikan bahwa aplikasi Anda berfungsi dengan asisten sebagai sumber informasi bagi pengguna, Anda hanya perlu mengikuti aksesibilitas terbaik praktik terbaik. Bagian ini menjelaskan cara memberikan informasi tambahan untuk membantu meningkatkan pengalaman pengguna asisten serta berbagai skenario yang memerlukan penanganan khusus, seperti View kustom.
Membagikan informasi tambahan bersama asisten
Selain teks dan screenshot, aplikasi Anda dapat membagikan informasi lain dengan asisten. Misalnya, musik Anda dapat memilih untuk meneruskan informasi album saat ini sehingga asisten dapat menyarankan tindakan 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 menyediakan informasi khusus aktivitas dengan callback aktivitas seperti yang ditunjukkan dalam Gambar 3:
Untuk menyediakan konteks aplikasi global, aplikasi akan membuat sebuah implementasi
Application.OnProvideAssistDataListener
dan mendaftarkannya
menggunakan registerOnProvideAssistDataListener()
.
Untuk menyediakan informasi kontekstual khusus aktivitas, aktivitas
menggantikan onProvideAssistData()
dan onProvideAssistContent()
.
Dua metode aktivitas dipanggil setelah global opsional
akan dipanggil. Karena callback dieksekusi pada thread utama, callback harus
selesaikan segera.
Callback dipanggil hanya saat aktivitas berjalan.
Menyediakan konteks
Saat pengguna mengaktifkan asisten itu,
onProvideAssistData()
dipanggil untuk membuat
Intent ACTION_ASSIST
dengan semua konteks
aplikasi saat ini yang direpresentasikan sebagai instance AssistStructure
. Anda dapat mengganti
metode ini untuk
apa pun yang Anda suka ke dalam paket agar muncul dalam
EXTRA_ASSIST_CONTEXT
dari intent bantuan.
Mendeskripsikan konten
Aplikasi Anda dapat menerapkan onProvideAssistContent()
untuk meningkatkan pengalaman pengguna asisten dengan memberikan referensi terkait konten
yang berkaitan dengan aktivitas saat ini. Anda dapat mendeskripsikan konten aplikasi menggunakan
kosakata umum yang didefinisikan oleh Schema.org
melalui objek JSON-LD. Dalam contoh di bawah ini, sebuah aplikasi musik menyediakan
data terstruktur untuk menggambarkan album musik yang saat ini sedang
melihat:
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 khusus
onProvideAssistContent()
,
yang dapat memberikan manfaat berikut:
- Menyesuaikan konten yang disediakan intentnya untuk lebih mencerminkan konteks tingkat atas dari aktivitas tersebut.
- Menyediakan URI konten yang ditampilkan.
- Mengisi
setClipData()
dengan tambahan konten menarik yang sedang dilihat pengguna.
Catatan: Aplikasi yang menggunakan penerapan pemilihan teks kustom mungkin memerlukan
untuk menerapkan onProvideAssistContent()
dan panggil setClipData()
.
Implementasi standar
Jika onProvideAssistData()
atau onProvideAssistContent()
tidak
diimplementasikan, sistem akan tetap melanjutkan dan meneruskan
informasi yang dikumpulkan secara otomatis ke asisten, kecuali
jendela ditandai sebagai aman.
Seperti yang ditunjukkan pada Gambar 3, sistem menggunakan implementasi default onProvideStructure()
dan onProvideVirtualStructure()
untuk
mengumpulkan teks dan
melihat informasi hierarki. Jika tampilan Anda mengimplementasikan fungsi
gambar teks, ganti onProvideStructure()
untuk memberikan
asisten dengan teks yang ditampilkan kepada pengguna dengan memanggil setText(CharSequence)
.
Pada umumnya, menerapkan dukungan aksesibilitas memungkinkan asisten untuk mendapatkan informasi yang dibutuhkan. Untuk menerapkan dukungan aksesibilitas, amati praktik terbaik yang dijelaskan dalam Membuat Aplikasi Dapat diakses, termasuk yang berikut:
- Berikan atribut
android:contentDescription
. - Isi
AccessibilityNodeInfo
untuk tampilan kustom. - Merek
memastikan objek
ViewGroup
kustom sudah benar ekspos anak-anak mereka.
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 menetapkan FLAG_SECURE
secara eksplisit untuk
setiap jendela yang dibuat oleh aktivitas, termasuk dialog. Aplikasi Anda juga
dapat menggunakan
setSecure()
untuk dikecualikan
dari asisten. Tidak ada
mekanisme global (tingkat aplikasi) untuk mengecualikan semua tampilan dari asisten. Catatan
bahwa FLAG_SECURE
tidak menyebabkan callback Assist API berhenti
yang dihasilkan. Aktivitas yang menggunakan FLAG_SECURE
masih dapat secara eksplisit
memberikan informasi ke aplikasi asisten menggunakan callback yang dijelaskan sebelumnya
panduan ini.
Catatan: Untuk akun perusahaan (Android for Work),
administrator dapat menonaktifkan
pengumpulan data asisten untuk profil kerja dengan menggunakan metode setScreenCaptureDisabled()
dari DevicePolicyManager
API.
Interaksi suara
Callback Assist API juga dipanggil pada frasa kunci deteksi. Untuk informasi selengkapnya, lihat Suara Dokumentasi Actions.
Pertimbangan urutan Z
Asisten menggunakan jendela overlay ringan yang ditampilkan di atas aktivitas saat ini. Karena pengguna dapat mengaktifkan asisten kapan saja, jangan buat permanen jendela pemberitahuan sistem yang mengganggu jendela overlay, seperti ditunjukkan di Gambar 4.
Jika aplikasi Anda menggunakan peringatan sistem, hapus segera karena membiarkannya berada di mengurangi pengalaman pengguna.
Aplikasi tujuan
Aplikasi Asisten biasanya memanfaatkan deep linking untuk menemukan aplikasi tujuan. Untuk menjadikan aplikasi tujuan potensial, pertimbangkan untuk menambahkan dukungan deep linking. 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) khusus untuk implementasi Asisten Google. Sebagai misalnya, Aplikasi Asisten Google menggunakan deep linking dan Link Aplikasi untuk mengarahkan traffic ke aplikasi tujuan.
Mengimplementasikan Asisten Anda Sendiri
Anda mungkin ingin mengimplementasikan asisten Anda sendiri. Seperti yang ditunjukkan pada Gambar
2, pengguna dapat memilih aplikasi asisten aktif. Tujuan
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 teks dan tampilan yang direpresentasikan sebagai instance AssistStructure
di onHandleAssist()
.
Asisten menerima screenshot melalui onHandleScreenshot()
.