diff --git a/src/index.ts b/src/index.ts index fb3cf9ddc..4e22fa5e6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -83,6 +83,7 @@ import { SpinnerDialog } from './plugins/spinnerdialog'; import { Splashscreen } from './plugins/splashscreen'; import { SQLite } from './plugins/sqlite'; import { StatusBar } from './plugins/statusbar'; +import { StreamingMedia } from './plugins/streaming-media'; import { ThreeDeeTouch } from './plugins/3dtouch'; import { Toast } from './plugins/toast'; import { TouchID } from './plugins/touchid'; @@ -125,6 +126,7 @@ export * from './plugins/push'; export * from './plugins/safari-view-controller'; export * from './plugins/sms'; export * from './plugins/spinnerdialog'; +export * from './plugins/streaming-media'; export * from './plugins/toast'; export * from './plugins/twitter-connect'; export * from './plugins/video-editor'; @@ -269,6 +271,7 @@ window['IonicNative'] = { Splashscreen: Splashscreen, SQLite: SQLite, StatusBar: StatusBar, + StreamingMedia: StreamingMedia, ThreeDeeTouch: ThreeDeeTouch, Toast: Toast, TouchID: TouchID, diff --git a/src/plugins/streaming-media.ts b/src/plugins/streaming-media.ts new file mode 100644 index 000000000..b8a775749 --- /dev/null +++ b/src/plugins/streaming-media.ts @@ -0,0 +1,77 @@ +import {Plugin, Cordova} from './plugin'; +/** + * @name StreamingMedia + * @description + * This plugin allows you to stream audio and video in a fullscreen, native player on iOS and Android. + * + * @usage + * ``` + * import {StreamingMedia} from 'ionic-native'; + * + * let options: VideoOptions = { + * successCallback: () => { console.log('Video played') }, + * errorCallback: (e) => { console.log('Error streaming') }, + * orientation: 'landscape' + * }; + * + * StreamingMedia.('https://path/to/video/stream', options); + * + * ``` + */ +@Plugin({ + plugin: 'cordova-plugin-streaming-media', + pluginRef: 'plugins.streamingMedia', + repo: 'https://github.com/nchutchind/cordova-plugin-streaming-media', + platforms: ['Android', 'iOS'] +}) +export class StreamingMedia { + /** + * Streams a video + * @param videoUrl {string} The URL of the video + * @param options {VideoOptions} Options + */ + @Cordova({sync: true}) + static playVideo(videoUrl: string, options?: VideoOptions): void { } + + /** + * Streams an audio + * @param audioUrl {string} The URL of the audio stream + * @param options {AudioOptions} Options + */ + @Cordova({sync: true}) + static playAudio(audioUrl: string, options?: AudioOptions): void { } + + /** + * Stops streaming audio + */ + @Cordova({sync: true}) + static stopAudio(): void { } + + /** + * Pauses streaming audio + */ + @Cordova({sync: true, platforms: ['iOS']}) + static pauseAudio(): void { } + + /** + * Resumes streaming audio + */ + @Cordova({sync: true, platforms: ['iOS']}) + static resumeAudio(): void { } + +} + +export interface VideoOptions { + successCallback?: Function; + errorCallback?: Function; + orientation?: string; +} + +export interface AudioOptions { + bgColor?: string; + bgImage?: string; + bgImageScale?: string; + initFullscreen?: boolean; + successCallback?: Function; + errorCallback?: Function; +}