Media Plugin
This plugin provides the ability to record and play back audio files on a device.
The current implementation does not adhere to a W3C specification for media capture, and is provided for convenience only. A future implementation will adhere to the latest W3C specification and may deprecate the current APIs.
This plugin defines a global
Media
Constructor. Although in the global scope, it is not available until after the deviceready
event.document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(Media);
}
cordova-plugin-media
- Android (API 23+)
- iOS
var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]);
- src: A URI containing the audio content. (DOMString)
- mediaSuccess: (Optional) The callback that executes after a
Media
object has completed the current play, record, or stop action. (Function) - mediaError: (Optional) The callback that executes if an error occurs. (Function)
- mediaStatus: (Optional) The callback that executes to indicate status changes. (Function)
- mediaDurationUpdate: (Optional) the callback that executes when the file's duration updates and is available. (Function)
- position: The position within the audio playback, in seconds.
- Not automatically updated during play; call
getCurrentPosition
to update.
- duration: The duration of the media, in seconds.
The following constants are reported as the only parameter to the
mediaStatus
callback:Media.MEDIA_NONE
= 0;Media.MEDIA_STARTING
= 1;Media.MEDIA_RUNNING
= 2;Media.MEDIA_PAUSED
= 3;Media.MEDIA_STOPPED
= 4;
media.getCurrentAmplitude
: Returns the current amplitude within an audio file.media.getCurrentPosition
: Returns the current position within an audio file.media.getDuration
: Returns the duration of an audio file.media.play
: Start or resume playing an audio file.media.pause
: Pause playback of an audio file.media.pauseRecord
: Pause recording of an audio file.media.release
: Releases the underlying operating system's audio resources.media.resumeRecord
: Resume recording of an audio file.media.seekTo
: Moves the position within the audio file.media.setVolume
: Set the volume for audio playback.media.startRecord
: Start recording an audio file.media.stopRecord
: Stop recording an audio file.media.stop
: Stop playing an audio file.
Returns the current amplitude within an audio file.
media.getCurrentAmplitude(mediaSuccess, [mediaError]);
Supported Platforms
- Android
- iOS
Parameters
- mediaSuccess: The callback that is passed the current amplitude (0.0 - 1.0).
- mediaError: (Optional) The callback to execute if an error occurs.
Quick Example
// Audio player
//
var my_media = new Media(src, onSuccess, onError);
// Record audio
my_media.startRecord();
mediaTimer = setInterval(function () {
// get media amplitude
my_media.getCurrentAmplitude(
// success callback
function (amp) {
console.log(amp + "%");
},
// error callback
function (e) {
console.log("Error getting amp=" + e);
}
);
}, 1000);
Returns the current position within an audio file. Also updates the
Media
object's position
parameter.media.getCurrentPosition(mediaSuccess, [mediaError]);
Parameters
- mediaSuccess: The callback that is passed the current position in seconds.
- mediaError: (Optional) The callback to execute if an error occurs.
Quick Example
// Audio player
//
var my_media = new Media(src, onSuccess, onError);
// Update media position every second
var mediaTimer = setInterval(function () {
// get media position
my_media.getCurrentPosition(
// success callback
function (position) {
if (position > -1) {
console.log((position) + " sec");
}
},
// error callback
function (e) {
console.log("Error getting pos=" + e);
}
);
}, 1000);
Returns the duration of an audio file in seconds. If the duration is unknown, it returns a value of -1.
media.getDuration();
Quick Example
// Audio player
//
var my_media = new Media(src, onSuccess, onError);
// Get duration
var counter = 0;
var timerDur = setInterval(function() {
counter = counter + 100;
if (counter > 2000) {
clearInterval(timerDur);
}
var dur = my_media.getDuration();
if (dur > 0) {
clearInterval(timerDur);
document.getElementById('audio_duration').innerHTML = (dur) + " sec";
}
}, 100);
Starts or resumes playing an audio file.
media.play();
Quick Example
// Play audio
//
function playAudio(url) {
// Play the audio file at url
var my_media = new Media(url,
// success callback
function () {
console.log("playAudio():Audio Success");
},
// error callback
function (err) {
console.log("playAudio():Audio Error: " + err);
}
);
// Play audio
my_media.play();
}
iOS Quirks
- numberOfLoops: Pass this option to the
play
method to specify the number of times you want the media file to play, e.g.:var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3")myMedia.play({ numberOfLoops: 2 }); - playAudioWhenScreenIsLocked: Pass in this option to the
play
method to specify whether you want to allow playback when the screen is locked. If set totrue
(the default value), the state of the hardware mute button is ignored, e.g.:var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");myMedia.play({ playAudioWhenScreenIsLocked : true });myMedia.setVolume('1.0');To allow playback with the screen locked or background audio you have to addaudio
toUIBackgroundModes
in theinfo.plist
file. See . Also note that the audio has to be started before going to background. - order of file search: When only a file name or simple path is provided, iOS searches in the
www
directory for the file, then in the application'sdocuments/tmp
directory:var myMedia = new Media("audio/beer.mp3")myMedia.play() // first looks for file in www/audio/beer.mp3 then in <application>/documents/tmp/audio/beer.mp3
Android Quirk
Newer versions of Android have aggressive routines that limit background processing. If you are trying to get the duration while your app is in the background longer than roughly 5 minutes, you will get more consistent results by using the
mediaDurationUpdate
callback of the constructor.Pauses playing an audio file.
media.pause();
Quick Example
// Play audio
//
function playAudio(url) {
// Play the audio file at url
var my_media = new Media(url,
// success callback
function () { console.log("playAudio():Audio Success"); },
// error callback
function (err) { console.log("playAudio():Audio Error: " + err); }
);
// Play audio
my_media.play();
// Pause after 10 seconds
setTimeout(function () {
my_media.pause();
}, 10000);
}
Pauses recording an audio file.
media.pauseRecord();
Supported Platforms
- iOS
Quick Example
// Record audio
//
function recordAudio() {
var src = "myrecording.mp3";
var mediaRec = new Media(src,
// success callback
function() {
console.log("recordAudio():Audio Success");
},
// error callback
function(err) {
console.log("recordAudio():Audio Error: "+ err.code);
});