Voice action adalah bagian penting dari pengalaman wearable. Dengan fitur ini, pengguna dapat melakukan tindakan dengan cepat dan handsfree. Wear OS by Google menyediakan dua jenis voice action:
- Bawaan sistem
- Voice action ini berbasis tugas dan tertanam dalam platform Wear. Anda memfilter aktivitas yang ingin Anda mulai saat voice action diucapkan. Contohnya meliputi "Buat catatan" atau "Setel alarm".
- Bawaan aplikasi
- Voice action ini berbasis aplikasi, dan Anda mendeklarasikannya seperti ikon peluncur. Pengguna mengucapkan "Mulai Nama Aplikasi Anda" untuk menggunakan voice action ini, dan aktivitas yang Anda tentukan akan dimulai.
Mendeklarasikan voice action bawaan sistem
Platform Wear OS menyediakan beberapa intent suara yang didasarkan pada tindakan pengguna, seperti "Buat catatan" atau "Setel alarm". Hal ini memungkinkan pengguna untuk mengucapkan apa yang ingin mereka lakukan, dan sistem akan menentukan aktivitas terbaik untuk dimulai.
Saat pengguna mengucapkan voice action, aplikasi Anda dapat memfilter intent yang akan dipicu untuk memulai suatu aktivitas. Jika Anda ingin memulai suatu layanan untuk melakukan sesuatu di latar belakang, tampilkan aktivitas sebagai isyarat visual dan mulai layanan dalam aktivitas tersebut. Pastikan untuk memanggil finish()
ketika Anda ingin menghapus isyarat visual.
Misalnya, untuk perintah "Buat catatan", deklarasikan filter intent ini untuk memulai aktivitas yang bernama MyNoteActivity
:
<activity android:name="MyNoteActivity"> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="com.google.android.voicesearch.SELF_NOTE" /> </intent-filter> </activity>
Berikut adalah daftar intent suara yang didukung oleh platform Wear:
Nama | Contoh Frasa | Intent |
---|---|---|
Menelepon mobil/taksi | "Ok Google, carikan taksi" "Ok Google, teleponkan mobil" |
|
Buat catatan | "Ok Google, buat catatan" "Ok Google, catatan untuk diri sendiri" |
|
Menyetel alarm | "Oke Google, setel alarm untuk jam 8 pagi" "Oke Google, bangunkan saya jam 6 besok" |
|
Menyetel timer | "Oke Google, setel timer selama 10 menit" |
|
Memulai stopwatch | "Oke Google, mulai stopwatch" |
|
Mulai/Berhenti bersepeda | "Ok Google, mulai bersepeda" "Ok Google, mulai bersepeda" "Ok Google, berhenti bersepeda" |
|
Mulai/Berhenti berlari | "Ok Google, lacak lari saya" "Ok Google, mulai berlari" "OK Google, berhenti berlari" |
|
Mulai/Berhenti olahraga | "Ok Google, mulai olahraga" "Ok Google, lacak olahraga saya" "OK Google, berhenti olahraga" |
|
Menampilkan detak jantung | "Ok Google, berapa detak jantung saya?" "Oke Google, berapa bpm saya?" |
|
Menampilkan jumlah langkah | "Ok Google, berapa banyak langkah yang saya tempuh?" "Ok Google, berapa banyak langkah saya?" |
|
Untuk dokumentasi tentang cara mendaftar untuk intent platform dan mengakses informasi tambahan yang terdapat di dalamnya, lihat Intent umum.
Mendeklarasikan voice action bawaan aplikasi
Jika tidak ada intent suara platform yang berfungsi, Anda dapat memulai aplikasi secara langsung dengan voice action "Mulai MyActivityName".
Mendaftarkan untuk tindakan "Mulai" sama dengan mendaftar untuk ikon peluncur di ponsel. Namun aplikasi Anda tidak meminta ikon aplikasi di peluncur, melainkan meminta voice action.
Untuk menentukan teks yang harus diucapkan setelah "Mulai", tentukan atribut label
untuk aktivitas yang ingin Anda mulai. Misalnya, filter intent ini mengenali voice action "Mulai MyRunningApp" dan meluncurkan StartRunActivity
.
<application> <activity android:name="StartRunActivity" android:label="MyRunningApp"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
Mendapatkan input lisan format bebas
Selain menggunakan voice action untuk meluncurkan aktivitas, Anda juga dapat memanggil aktivitas Speech Recognizer bawaan sistem untuk mendapatkan input lisan dari pengguna. Cara ini berguna untuk mendapatkan input dari pengguna lalu memprosesnya, seperti melakukan penelusuran atau mengirimkan penelusuran sebagai pesan.
Di aplikasi Anda, panggil startActivityForResult()
menggunakan tindakan ACTION_RECOGNIZE_SPEECH
. Tindakan ini akan memulai aktivitas pengenalan suara, dan Anda dapat menangani hasilnya di onActivityResult()
.
Kotlin
private const val SPEECH_REQUEST_CODE = 0 ... // Create an intent that can start the Speech Recognizer activity private fun displaySpeechRecognizer() { val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply { putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM) } // Start the activity, the intent will be populated with the speech text startActivityForResult(intent, SPEECH_REQUEST_CODE) } // This callback is invoked when the Speech Recognizer returns. // This is where you process the intent and extract the speech text from the intent. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { if (requestCode == SPEECH_REQUEST_CODE && resultCode == Activity.RESULT_OK) { val spokenText: String? = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS).let { results -> results[0] } // Do something with spokenText } super.onActivityResult(requestCode, resultCode, data) }
Java
private static final int SPEECH_REQUEST_CODE = 0; // Create an intent that can start the Speech Recognizer activity private void displaySpeechRecognizer() { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); // Start the activity, the intent will be populated with the speech text startActivityForResult(intent, SPEECH_REQUEST_CODE); } // This callback is invoked when the Speech Recognizer returns. // This is where you process the intent and extract the speech text from the intent. @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == SPEECH_REQUEST_CODE && resultCode == RESULT_OK) { List<String> results = data.getStringArrayListExtra( RecognizerIntent.EXTRA_RESULTS); String spokenText = results.get(0); // Do something with spokenText } super.onActivityResult(requestCode, resultCode, data); }
Lihat juga referensi terkait berikut ini: