2016-04-25 18:51:42 +08:00
|
|
|
import {CordovaInstance, Plugin} from './plugin';
|
2016-04-27 21:54:14 +08:00
|
|
|
declare var Media:any;
|
2016-04-25 18:51:42 +08:00
|
|
|
/**
|
2016-04-27 21:54:14 +08:00
|
|
|
* @name MediaPlugin
|
2016-04-25 18:51:42 +08:00
|
|
|
* @description
|
|
|
|
* @usage
|
2016-04-30 09:46:35 +08:00
|
|
|
* ```ts
|
|
|
|
* import {MediaPlugin} from 'ionic-native';
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* ...
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* // Playing a file
|
|
|
|
* var file = new MediaPlugin("path/to/file.mp3");
|
|
|
|
*
|
|
|
|
* // play the file
|
|
|
|
* file.play();
|
|
|
|
*
|
|
|
|
* // skip to 10 seconds
|
|
|
|
* file.seekTo(10000);
|
|
|
|
*
|
|
|
|
* // stop plying the file
|
|
|
|
* file.stop();
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* ...
|
|
|
|
*
|
|
|
|
* // Recording to a file
|
|
|
|
* var newFile = new MediaPlugin("path/to/file.mp3");
|
|
|
|
* newFile.startRecord();
|
|
|
|
*
|
|
|
|
* newFile.stopRecord();
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* ```
|
2016-04-25 18:51:42 +08:00
|
|
|
*/
|
|
|
|
@Plugin({
|
|
|
|
repo: 'https://github.com/apache/cordova-plugin-media',
|
|
|
|
plugin: 'cordova-plugin-media',
|
|
|
|
pluginRef: 'Media'
|
|
|
|
})
|
2016-04-27 21:54:14 +08:00
|
|
|
export class MediaPlugin {
|
2016-04-25 18:51:42 +08:00
|
|
|
|
|
|
|
// Constants
|
|
|
|
static MEDIA_NONE : number = 0;
|
|
|
|
static MEDIA_STARTING : number = 1;
|
|
|
|
static MEDIA_RUNNING : number = 2;
|
|
|
|
static MEDIA_PAUSED : number = 3;
|
|
|
|
static MEDIA_STOPPED : number = 4;
|
|
|
|
|
|
|
|
// Properties
|
|
|
|
private _objectInstance : any;
|
|
|
|
|
|
|
|
// Methods
|
|
|
|
/**
|
|
|
|
* Open a media file
|
|
|
|
* @param src {string} A URI containing the audio content.
|
|
|
|
*/
|
|
|
|
constructor (src : string) {
|
|
|
|
// TODO handle success, error, and status
|
|
|
|
this._objectInstance = new Media(src);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the current amplitude of the current recording.
|
|
|
|
*/
|
|
|
|
@CordovaInstance()
|
|
|
|
getCurrentAmplitude () : Promise<any> {return}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the current position within an audio file. Also updates the Media object's position parameter.
|
|
|
|
*/
|
|
|
|
@CordovaInstance()
|
|
|
|
getCurrentPosition () : Promise<any> {return}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the duration of an audio file in seconds. If the duration is unknown, it returns a value of -1.
|
|
|
|
*/
|
|
|
|
@CordovaInstance({
|
|
|
|
sync: true
|
|
|
|
})
|
|
|
|
getDuration () : number {return}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Starts or resumes playing an audio file.
|
|
|
|
*/
|
|
|
|
@CordovaInstance({
|
|
|
|
sync: true
|
|
|
|
})
|
|
|
|
play (iosOptions? : {
|
|
|
|
numberOfLoops? : number,
|
|
|
|
playAudioWhenScreenIsLocked? : boolean
|
|
|
|
}) : void {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Pauses playing an audio file.
|
|
|
|
*/
|
|
|
|
@CordovaInstance({
|
|
|
|
sync: true
|
|
|
|
})
|
|
|
|
pause () : void {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Releases the underlying operating system's audio resources. This is particularly important for Android, since there are a finite amount of OpenCore instances for media playback. Applications should call the release function for any Media resource that is no longer needed.
|
|
|
|
*/
|
|
|
|
@CordovaInstance({
|
|
|
|
sync: true
|
|
|
|
})
|
|
|
|
release () : void {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the current position within an audio file.
|
|
|
|
* @param milliseconds
|
|
|
|
*/
|
|
|
|
@CordovaInstance({
|
|
|
|
sync: true
|
|
|
|
})
|
|
|
|
seekTo (milliseconds : number) : void {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the volume for an audio file.
|
|
|
|
* @param volume The volume to set for playback. The value must be within the range of 0.0 to 1.0.
|
|
|
|
*/
|
|
|
|
@CordovaInstance({
|
|
|
|
sync: true
|
|
|
|
})
|
|
|
|
setVolume (volume : number) : void {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Starts recording an audio file.
|
|
|
|
*/
|
|
|
|
@CordovaInstance({
|
|
|
|
sync: true
|
|
|
|
})
|
|
|
|
startRecord () : void {}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Stops recording
|
|
|
|
*/
|
|
|
|
@CordovaInstance({
|
|
|
|
sync: true
|
|
|
|
})
|
|
|
|
stopRecord () : void {}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Stops playing an audio file.
|
|
|
|
*/
|
|
|
|
@CordovaInstance({
|
|
|
|
sync: true
|
|
|
|
})
|
|
|
|
stop () : void {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
export class MediaError {
|
|
|
|
static get MEDIA_ERR_ABORTED () {return 1;}
|
|
|
|
static get MEDIA_ERR_NETWORK () {return 2;}
|
|
|
|
static get MEDIA_ERR_DECODE () {return 3;}
|
|
|
|
static get MEDIA_ERR_NONE_SUPPORTED () {return 4;}
|
|
|
|
code : number;
|
|
|
|
message : string;
|
|
|
|
}
|