From 4e9b2d917b22e7ac715cd78b0d3c591a324bb12c Mon Sep 17 00:00:00 2001 From: Daniel Sogl Date: Wed, 10 May 2017 00:24:59 +0200 Subject: [PATCH] feat(mobile-accessibility): add Mobile Accessibility plugin (#1505) * feature(plugin): mobile-accessibility fix #1304 * fixed linting * lint * usage * optimized promises --- .../plugins/mobile-accessibility/index.ts | 224 ++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 src/@ionic-native/plugins/mobile-accessibility/index.ts diff --git a/src/@ionic-native/plugins/mobile-accessibility/index.ts b/src/@ionic-native/plugins/mobile-accessibility/index.ts new file mode 100644 index 0000000000..f0a3b1b01f --- /dev/null +++ b/src/@ionic-native/plugins/mobile-accessibility/index.ts @@ -0,0 +1,224 @@ +import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core'; +import { Injectable } from '@angular/core'; + +/** + * @name Mobile Accessibility + * @description + * This plugin exposes information on the status of various accessibility features of mobile operating systems, including, for example, whether a screen reader is running, invert colors is enabled, and the preferred scaling for text. + * It also allows an application to send a string to be spoken by the screen reader, or a command to stop the screen reader from speaking. + * + * @usage + * ```typescript + * import { MobileAccessibility } from 'ionic-native'; + * + * + * constructor(private mobileAccessibility: MobileAccessibility) { } + * + * ... + * + * if(this.mobileAccessibility.isScreenReaderRunningCallback(); + * + * ``` + */ +@Plugin({ + pluginName: 'MobileAccessibility', + plugin: 'https://github.com/phonegap/phonegap-mobile-accessibility.git', + pluginRef: 'MobileAccessibilityNotifications', + repo: 'https://github.com/phonegap/phonegap-mobile-accessibility', + platforms: ['Amazon Fire OS', 'Android', 'iOS'] +}) +@Injectable() +export class MobileAccessibility extends IonicNativePlugin { + + MobileAccessibilityNotifications: { + ANNOUNCEMENT: 'ANNOUNCEMENT', + BOLD_TEXT_STATUS_CHANGED: 'BOLD_TEXT_STATUS_CHANGED', + CLOSED_CAPTIONING_STATUS_CHANGED: 'CLOSED_CAPTIONING_STATUS_CHANGED', + DARKER_SYSTEM_COLORS_STATUS_CHANGED: 'DARKER_SYSTEM_COLORS_STATUS_CHANGED', + GRAYSCALE_STATUS_CHANGED: 'GRAYSCALE_STATUS_CHANGED', + GUIDED_ACCESS_STATUS_CHANGED: 'GUIDED_ACCESS_STATUS_CHANGED', + INVERT_COLORS_STATUS_CHANGED: 'INVERT_COLORS_STATUS_CHANGED', + LAYOUT_CHANGED: 'LAYOUT_CHANGED', + MONO_AUDIO_STATUS_CHANGED: 'MONO_AUDIO_STATUS_CHANGED', + PAGE_SCROLLED: 'PAGE_SCROLLED', + REDUCE_MOTION_STATUS_CHANGED: 'REDUCE_MOTION_STATUS_CHANGED', + REDUCE_TRANSPARENCY_STATUS_CHANGED: 'REDUCE_TRANSPARENCY_STATUS_CHANGED', + SCREEN_CHANGED: 'SCREEN_CHANGED', + SCREEN_READER_STATUS_CHANGED: 'SCREEN_READER_STATUS_CHANGED', + SPEAK_SCREEN_STATUS_CHANGED: 'SPEAK_SCREEN_STATUS_CHANGED', + SPEAK_SELECTION_STATUS_CHANGED: 'SPEAK_SELECTION_STATUS_CHANGED', + SWITCH_CONTROL_STATUS_CHANGED: 'SWITCH_CONTROL_STATUS_CHANGED', + TOUCH_EXPLORATION_STATUS_CHANGED: 'TOUCH_EXPLORATION_STATUS_CHANGED' + }; + + /** + * Makes an asynchronous call to native MobileAccessibility to determine if a screen reader is running. + * @returns result {Promise} A result method to receive the boolean result asynchronously from the native MobileAccessibility plugin. + */ + @Cordova() + isScreenReaderRunning(): Promise { return; } + + /** + * An iOS-specific proxy for the MobileAccessibility.isScreenReaderRunning method + * @returns result {Promise} A result method to receive the boolean result asynchronously from the native MobileAccessibility plugin. + */ + @Cordova({ platforms: ['iOS'] }) + isVoiceOverRunningCallback(): Promise { return; } + + /** + * An Android/Amazon Fire OS-specific proxy for the MobileAccessibility.isScreenReaderRunning method. + * @returns result {Promise} A result method to receive the boolean result asynchronously from the native MobileAccessibility plugin. + */ + @Cordova({ platforms: ['Amazon Fire OS', 'Android'] }) + isTalkBackRunningCallback(): Promise { return; } + + /** + * On Android, this method returns true if ChromeVox is active and properly initialized with access to the text to speech API in the WebView. + * If TalkBack is running but ChromeVox is not active, this method is useful to alert the user of a potential problem. + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['Amazon Fire OS', 'Android'] }) + isChromeVoxActive(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isBoldTextEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova() + isClosedCaptioningEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isDarkerSystemColorsEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isGrayscaleEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isGuidedAccessEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isInvertColorsEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isMonoAudioEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isReduceMotionEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isReduceTransparencyEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isSpeakScreenEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isSpeakSelectionEnabledCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + isSwitchControlRunningCallback(): Promise { return; } + + /** + * + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['Amazon Fire OS', 'Android'] }) + isTouchExplorationEnabledCallback(): Promise { return; } + + /** + * + * * @returns {Promise} Returns the result + */ + @Cordova() + getTextZoomCallback(): Promise { return; } + + /** + * @param textZoom {nuber} A percentage value by which text in the WebView should be scaled. + */ + @Cordova({ sync: true }) + setTextZoom(textZoom: number): void { } + + /** + * + */ + @Cordova({ sync: true }) + updateTextZoom(): void { } + + /** + * A Boolean value which specifies whether to use the preferred text zoom of a default percent value of 100. + * @param value {boolean} Returns the result + */ + @Cordova({ sync: true }) + usePreferredTextZoom(value: boolean): void { } + + /** + * Posts a notification with a string for the screen reader to announce if it is running. + * @param mobileAccessibilityNotification {any} + * @param value {string} A string to be announced by a screen reader. + * @returns result {Promise} Returns the result + */ + @Cordova({ platforms: ['iOS'] }) + postNotification(mobileAccessibilityNotification: any, value: string): Promise { return; } + + /** + * Speaks a given string through the screenreader. On Android, if ChromeVox is active, it will use the specified queueMode and properties. + * @param value {string} + * @param queueMode {mumber} + * @param properties {any} + */ + @Cordova({ sync: true }) + speak(value: string, queueMode?: number, properties?: any): void { } + + /** + * Stops speech. + */ + @Cordova({ sync: true }) + stop(): void { } + +}