Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cordova: Is there a way to detect whether Voice Dictation has ended on iOS

Please note that this question is for Cordova/PhoneGap/Hybrid apps.

I have a <textarea> for which I want the app to behave in a certain way only when voice dictation input has ended -- i.e. user tabs "Done". However, this is proving to be rather difficult.

iOS's UIKit provides dictationRecordingDidEnd event under UITextInput but I am not sure if this can even be used in a hybrid app. (iOS Developer Library doc here)

EDIT: I am using ionic-plugin-keyboard.

Any ideas would be greatly appreciated.

like image 268
GoldenD Avatar asked Feb 04 '16 21:02

GoldenD


1 Answers

Maybe you can try to use the SpeechRecognitionPlugin or cordova-plugin-iflyspeech

For the cordova-plugin-iflyspeech you have 13 events to have control of the voice control in your iOS device like:

SpeechBegin
SpeechEnd
SpeechCancel
SpeechResults
SpeechError  
VolumeChanged

SpeakBegin
SpeakPaused
SpeakResumed
SpeakCancel
SpeakCompleted 
SpeakProgress
BufferProgress

And has support for a big number of languages like: English (US), English (UK), French, Spanish, Italian, etc.

This is an example of the 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();
}

And here you can bind the iOS method dictationRecordingDidEnd to: stopListening(); or cancelListening(); methods, depending the action.

like image 75
Benjamin RD Avatar answered Sep 29 '22 09:09

Benjamin RD