Skip to content

Commit

Permalink
feat(speech-recognition): add SpeechRecognition plugin (#897)
Browse files Browse the repository at this point in the history
  • Loading branch information
pbakondy authored and ihadeed committed Jan 20, 2017
1 parent 9c75a06 commit 7c30718
Show file tree
Hide file tree
Showing 2 changed files with 159 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ import { Shake } from './plugins/shake';
import { Sim } from './plugins/sim';
import { SMS } from './plugins/sms';
import { SocialSharing } from './plugins/socialsharing';
import { SpeechRecognition } from './plugins/speech-recognition';
import { SpinnerDialog } from './plugins/spinnerdialog';
import { Splashscreen } from './plugins/splashscreen';
import { SQLite } from './plugins/sqlite';
Expand Down Expand Up @@ -220,6 +221,7 @@ export * from './plugins/shake';
export * from './plugins/sim';
export * from './plugins/sms';
export * from './plugins/socialsharing';
export * from './plugins/speech-recognition';
export * from './plugins/spinnerdialog';
export * from './plugins/splashscreen';
export * from './plugins/sqlite';
Expand Down Expand Up @@ -342,6 +344,7 @@ window['IonicNative'] = {
Splashscreen,
SQLite,
StatusBar,
SpeechRecognition,
Stepcounter,
StreamingMedia,
Stripe,
Expand Down
156 changes: 156 additions & 0 deletions src/plugins/speech-recognition.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
import { Plugin, Cordova } from './plugin';
import { Observable } from 'rxjs/Observable';

export type SpeechRecognitionListeningOptions = SpeechRecognitionListeningOptionsIOS | SpeechRecognitionListeningOptionsAndroid;

export interface SpeechRecognitionListeningOptionsIOS {
/**
* used language for recognition (default `"en-US"`)
*/
language?: string;

/**
* umber of return matches (default `5`)
*/
matches?: number;

/**
* Allow partial results to be returned (default `false`)
*/
showPartial?: boolean;
}

export interface SpeechRecognitionListeningOptionsAndroid {
/**
* used language for recognition (default `"en-US"`)
*/
language?: string;

/**
* number of return matches (maximum number of matches)
*/
matches?: number;

/**
* displayed prompt of listener popup window
*/
prompt?: string;

/**
* display listener popup window with prompt (default `true`)
*/
showPopup?: boolean;
}

/**
* @name SpeechRecognition
* @description
* This plugin does speech recognition using cloud services
*
* @usage
* ```
* import { SpeechRecognition } from 'ionic-native';
*
* // Check feature available
* SpeechRecognition.isRecognitionAvailable()
* .then((available: boolean) => console.log(available))
*
* // Start the recognition process
* SpeechRecognition.startListening(options)
* .subscribe(
* (matches: Array<string>) => console.log(matches),
* (onerror) => console.log('error:', onerror)
* )
*
* // Stop the recognition process (iOS only)
* SpeechRecognition.stopListening()
*
* // Get the list of supported languages
* SpeechRecognition.getSupportedLanguages()
* .then(
* (languages: Array<string>) => console.log(languages),
* (error) => console.log(error)
* )
*
* // Check permission
* SpeechRecognition.hasPermission()
* .then((hasPermission: boolean) => console.log(hasPermission))
*
* // Request permissions
* SpeechRecognition.requestPermission()
* .then(
* () => console.log('Granted'),
* () => console.log('Denied')
* )
*
* ```
*/
@Plugin({
pluginName: 'SpeechRecognition',
plugin: 'cordova-plugin-speechrecognition',
pluginRef: 'plugins.speechRecognition',
repo: 'https://github.com/pbakondy/cordova-plugin-speechrecognition',
platforms: ['Android', 'iOS']
})
export class SpeechRecognition {

/**
* Check feature available
* @return {Promise<boolean>}
*/
@Cordova()
static isRecognitionAvailable(): Promise<boolean> {
return;
}

/**
* Start the recognition process
* @return {Promise< Array<string> >} list of recognized terms
*/
@Cordova({
callbackOrder: 'reverse',
observable: true,

})
static startListening(options?: SpeechRecognitionListeningOptions): Observable<Array<string>> {
return;
}

/**
* Stop the recognition process
*/
@Cordova({
platforms: ['iOS']
})
static stopListening(): Promise<void> {
return;
}

/**
* Get the list of supported languages
* @return {Promise< Array<string> >} list of languages
*/
@Cordova()
static getSupportedLanguages(): Promise<Array<string>> {
return;
}

/**
* Check permission
* @return {Promise<boolean>} has permission
*/
@Cordova()
static hasPermission(): Promise<boolean> {
return;
}

/**
* Request permissions
* @return {Promise<void>}
*/
@Cordova()
static requestPermission(): Promise<void> {
return;
}

}

0 comments on commit 7c30718

Please sign in to comment.