capacitor-community / speech-recognition

MIT License
79 stars 43 forks source link

Add isListening method and listeningState listener #83

Closed khromov closed 2 months ago

khromov commented 2 months ago

As per https://github.com/capacitor-community/speech-recognition/issues/43 and https://github.com/capacitor-community/speech-recognition/issues/68 there is currently some usability issues caused by differences between iOS and Android API:s where Android will stop listening automatically after a few seconds while iOS will continue listening indefinitely.

This PR aims to solve the problem by allowing users better control over when the speech recognition is ongoing by adding the isListening() method for polling whether speech recognition is currently running, as well as addListener('listeningState', ...) for notifying users when speech recognition starts and stops.

The new API:s as per the readme are:

addListener('listeningState', ...)

addListener(eventName: "listeningState", listenerFunc: (data: { status: 'started' | 'stopped'; }) => void) => Promise<PluginListenerHandle> & PluginListenerHandle

Called when listening state changed.

Param Type
eventName 'listeningState'
listenerFunc (data: { status: 'started' 'stopped'; }) => void

Returns: Promise<PluginListenerHandle> & PluginListenerHandle

Since: 6.0.0


isListening()

isListening() => Promise<{ listening: boolean }>

Check if the player is currently listening.

Since: 6.0.0