Cordova: ¿Hay alguna manera de detectar si Dictado de Voz ha finalizado en iOS?

Tenga en count que esta pregunta es para las aplicaciones Cordova / PhoneGap / Hybrid .

Tengo una <textarea> para la que quiero que la aplicación se comporte de cierta manera solo cuando la input de dictado de voz ha finalizado, es decir, las tabs de usuario "Listo". Sin embargo, esto está resultando bastante difícil.

El UIKit de iOS proporciona el evento dictationRecordingDidEnd en UITextInput pero no estoy seguro de si esto puede incluso utilizarse en una aplicación híbrida. (doc de la Biblioteca para desarrolladores de iOS aquí )

EDITAR: Estoy usando el ionic-plugin-keyboard .

Cualquier idea sería muy apreciada.

Tal vez puedas intentar utilizar el SpeechRecognitionPlugin o cordova-plugin-iflyspeech

Para cordova-plugin-iflyspeech tienes 13 events para tener control del control de voz en tu dispositivo iOS como:

 SpeechBegin SpeechEnd SpeechCancel SpeechResults SpeechError VolumeChanged SpeakBegin SpeakPaused SpeakResumed SpeakCancel SpeakCompleted SpeakProgress BufferProgress 

Y tiene soporte para un gran número de idiomas como: inglés (EE. UU.), Inglés (Reino Unido), francés, español, italiano, etc.

Este es un ejemplo de la documentation

 function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady() { $('div#status').html( 'speech engine ready' ); } function startReading() { var text = $('textarea#read').val(); navigator.speech.startSpeaking( text, {voice_name: 'xiaoyan'} ); } function stopReading() { navigator.speech.stopSpeaking(); } function startListening() { $('div#status').html( 'Listening, please speak.' ); navigator.speech.startListening({language:'en-US'} function(str) { // this is what the device hear and understand $('textarea#read').val( str ); }); } function stopListening() { navigator.speech.stopListening(); } 

Y aquí puedes vincular el método iOS dictationRecordingDidEnd a: stopListening(); o cancelListening(); methods, dependiendo de la acción.