Cordova:有没有办法检测语音听写是不是在 iOS 上结束
Posted
技术标签:
【中文标题】Cordova:有没有办法检测语音听写是不是在 iOS 上结束【英文标题】:Cordova: Is there a way to detect whether Voice Dictation has ended on iOSCordova:有没有办法检测语音听写是否在 iOS 上结束 【发布时间】:2016-02-04 21:05:54 【问题描述】:请注意,此问题适用于 Cordova/PhoneGap/Hybrid 应用。
我有一个<textarea>
,我希望应用程序仅在语音听写输入结束时以某种方式运行——即用户选项卡“完成”。然而,事实证明这是相当困难的。
ios 的UIKit
在UITextInput
下提供dictationRecordingDidEnd
事件,但我不确定这是否可以在混合应用程序中使用。 (iOS 开发者库文档here)
编辑:我正在使用ionic-plugin-keyboard
。
任何想法将不胜感激。
【问题讨论】:
【参考方案1】:也许您可以尝试使用SpeechRecognitionPlugin 或cordova-plugin-iflyspeech
对于cordova-plugin-iflyspeech
,您有 13 个事件可以控制 iOS 设备中的语音控制,例如:
SpeechBegin
SpeechEnd
SpeechCancel
SpeechResults
SpeechError
VolumeChanged
SpeakBegin
SpeakPaused
SpeakResumed
SpeakCancel
SpeakCompleted
SpeakProgress
BufferProgress
并且支持多种语言,例如:英语(美国)、英语(英国)、法语、西班牙语、意大利语等。
这是一个文档示例
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();
在这里您可以将 iOS 方法 dictationRecordingDidEnd
绑定到:
stopListening();
或 cancelListening();
方法,具体取决于操作。
【讨论】:
我也会推荐 cordova-plugin-iflyspeech 插件。以上是关于Cordova:有没有办法检测语音听写是不是在 iOS 上结束的主要内容,如果未能解决你的问题,请参考以下文章