Media - PhoneGap 中文文档

返回介绍

Media

发布于 2019-07-04 字数 38646 浏览 893 评论 0

Media

The Media object provides the ability to record and play back audio files on a device.

var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]);

NOTE: 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.

Parameters

  • 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)

Constants

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;

Methods

  • 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.release: Releases the underlying operating system’s audio resources.
  • 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.

Additional ReadOnly Parameters

  • 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.

Supported Platforms

  • Android
  • BlackBerry WebWorks (OS 5.0 and higher)
  • iOS
  • Windows Phone 7.5
  • Tizen
  • Windows 8

Permissions

Android

app/res/xml/config.xml

<plugin name="Media" value="org.apache.cordova.AudioHandler" />

app/AndroidManifest.xml

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

BlackBerry WebWorks

www/plugins.xml

<plugin name="Capture" value="org.apache.cordova.media.MediaCapture" />

iOS

config.xml

<plugin name="Media" value="CDVSound" />

Windows Phone

Properties/WPAppManifest.xml

<Capabilities>
    <Capability Name="ID_CAP_MEDIALIB" />
    <Capability Name="ID_CAP_MICROPHONE" />
    <Capability Name="ID_HW_FRONTCAMERA" />
    <Capability Name="ID_CAP_ISV_CAMERA" />
    <Capability Name="ID_CAP_CAMERA" />
</Capabilities>

Reference: Application Manifest for Windows Phone

Tizen

No permissions are required.

Windows Phone Quirks

  • Only one media file can be played back at a time.
  • There are strict restrictions on how your application interacts with other media. See the Microsoft documentation for details.

media.getCurrentPosition

Returns the current position within an audio file.

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.

Description

An asynchronous function that returns the current position of the
underlying audio file of a Media object. Also updates the Media
object’s position parameter.

Supported Platforms

  • Android
  • BlackBerry WebWorks (OS 5.0 and higher)
  • iOS
  • Windows Phone 7 and 8
  • Tizen
  • Windows 8

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);

Full Example

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
<title>Media Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-x.x.x.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
// Play audio
//
function playAudio(src) {
// Create Media object from src
my_media = new Media(src, onSuccess, onError);
// Play audio
my_media.play();
// Update my_media position every second
if (mediaTimer == null) {
    mediaTimer = setInterval(function() {
// get my_media position
my_media.getCurrentPosition(
    // success callback
    function(position) {

if (position > -1) {

setAudioPosition((position) + " sec");

}
    },
    // error callback
    function(e) {

console.log("Error getting pos=" + e);

setAudioPosition("Error: " + e);
    }
);
    }, 1000);
}
}
// Pause audio
//
function pauseAudio() {
if (my_media) {
    my_media.pause();
}
}
// Stop audio
//
function stopAudio() {
if (my_media) {
    my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
// onSuccess Callback
//
function onSuccess() {
console.log("playAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: '    + error.code    + '\n' +
      'message: ' + error.message + '\n');
}
// Set audio position
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
</script>
      </head>
      <body>
<a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
<a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
<a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
<p id="audio_position"></p>
      </body>
    </html>

media.getDuration

Returns the duration of an audio file.

media.getDuration();

Description

The media.getDuration method executes synchronously, returning the
duration of the audio file in seconds, if known. If the duration is
unknown, it returns a value of -1.

Supported Platforms

  • Android
  • BlackBerry WebWorks (OS 5.0 and higher)
  • iOS
  • Windows Phone 7 and 8
  • Tizen
  • Windows 8

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);

Full Example

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
<title>Media Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-x.x.x.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
// Play audio
//
function playAudio(src) {
// Create Media object from src
my_media = new Media(src, onSuccess, onError);
// Play audio
my_media.play();
// Update my_media position every second
if (mediaTimer == null) {
    mediaTimer = setInterval(function() {
// get my_media position
my_media.getCurrentPosition(
    // success callback
    function(position) {

if (position > -1) {

setAudioPosition((position) + " sec");

}
    },
    // error callback
    function(e) {

console.log("Error getting pos=" + e);

setAudioPosition("Error: " + e);
    }
);
    }, 1000);
}
}
// Pause audio
//
function pauseAudio() {
if (my_media) {
    my_media.pause();
}
}
// Stop audio
//
function stopAudio() {
if (my_media) {
    my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
// onSuccess Callback
//
function onSuccess() {
console.log("playAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: '    + error.code    + '\n' +
      'message: ' + error.message + '\n');
}
// Set audio position
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
</script>
      </head>
      <body>
<a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
<a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
<a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
<p id="audio_position"></p>
      </body>
    </html>

media.pause

Pauses playing an audio file.

media.pause();

Description

The media.pause method executes synchronously, and pauses playing an audio file.

Supported Platforms

  • Android
  • BlackBerry WebWorks (OS 5.0 and higher)
  • iOS
  • Windows Phone 7 and 8
  • Tizen
  • Windows 8

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 () {
media.pause();
    }, 10000);
}

Full Example

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
<title>Media Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-x.x.x.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
// Play audio
//
function playAudio(src) {
// Create Media object from src
my_media = new Media(src, onSuccess, onError);
// Play audio
my_media.play();
// Update my_media position every second
if (mediaTimer == null) {
    mediaTimer = setInterval(function() {
// get my_media position
my_media.getCurrentPosition(
    // success callback
    function(position) {

if (position > -1) {

setAudioPosition((position) + " sec");

}
    },
    // error callback
    function(e) {

console.log("Error getting pos=" + e);

setAudioPosition("Error: " + e);
    }
);
    }, 1000);
}
}
// Pause audio
//
function pauseAudio() {
if (my_media) {
    my_media.pause();
}
}
// Stop audio
//
function stopAudio() {
if (my_media) {
    my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
// onSuccess Callback
//
function onSuccess() {
console.log("playAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: '    + error.code    + '\n' +
      'message: ' + error.message + '\n');
}
// Set audio position
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
</script>
      </head>
      <body>
<a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
<a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
<a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
<p id="audio_position"></p>
      </body>
    </html>

media.play

Starts or resumes playing an audio file.

media.play();

Description

The media.play method executes synchronously, and starts or resumes
playing an audio file.

Supported Platforms

  • Android
  • BlackBerry WebWorks (OS 5.0 and higher)
  • iOS
  • Windows Phone 7 and 8
  • Tizen
  • Windows 8

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();
}

Full Example

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
<title>Media Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-x.x.x.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
// Play audio
//
function playAudio(src) {
if (my_media == null) {
    // Create Media object from src
    my_media = new Media(src, onSuccess, onError);
} // else play current audio
// Play audio
my_media.play();
// Update my_media position every second
if (mediaTimer == null) {
    mediaTimer = setInterval(function() {
// get my_media position
my_media.getCurrentPosition(
    // success callback
    function(position) {

if (position > -1) {

setAudioPosition((position) + " sec");

}
    },
    // error callback
    function(e) {

console.log("Error getting pos=" + e);

setAudioPosition("Error: " + e);
    }
);
    }, 1000);
}
}
// Pause audio
//
function pauseAudio() {
if (my_media) {
    my_media.pause();
}
}
// Stop audio
//
function stopAudio() {
if (my_media) {
    my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
// onSuccess Callback
//
function onSuccess() {
console.log("playAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: '    + error.code    + '\n' +
      'message: ' + error.message + '\n');
}
// Set audio position
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
</script>
      </head>
      <body>
<a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
<a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
<a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
<p id="audio_position"></p>
      </body>
    </html>

BlackBerry WebWorks Quirks

  • BlackBerry devices support a limited number of simultaneous audio
    channels. CDMA devices only support a single audio channel. Other
    devices support up to two simultaneous channels. An attempt to play
    more audio files than the supported amount results in previous
    playback being stopped.

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 to true (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 : false })
    
  • 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’s documents/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
    

media.release

Releases the underlying operating system’s audio resources.

media.release();

Description

The media.release method executes synchronously, releasing 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.

Supported Platforms

  • Android
  • BlackBerry WebWorks (OS 5.0 and higher)
  • iOS
  • Windows Phone 7 and 8
  • Tizen
  • Windows 8

Quick Example

// Audio player
//
var my_media = new Media(src, onSuccess, onError);
my_media.play();
my_media.stop();
my_media.release();

Full Example

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
<title>Media Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-x.x.x.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
// Play audio
//
function playAudio(src) {
// Create Media object from src
my_media = new Media(src, onSuccess, onError);
// Play audio
my_media.play();
// Update my_media position every second
if (mediaTimer == null) {
    mediaTimer = setInterval(function() {
// get my_media position
my_media.getCurrentPosition(
    // success callback
    function(position) {

if (position > -1) {

setAudioPosition((position) + " sec");

}
    },
    // error callback
    function(e) {

console.log("Error getting pos=" + e);

setAudioPosition("Error: " + e);
    }
);
    }, 1000);
}
}
// Pause audio
//
function pauseAudio() {
if (my_media) {
    my_media.pause();
}
}
// Stop audio
//
function stopAudio() {
if (my_media) {
    my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
// onSuccess Callback
//
function onSuccess() {
console.log("playAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: '    + error.code    + '\n' +
      'message: ' + error.message + '\n');
}
// Set audio position
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
</script>
      </head>
      <body>
<a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
<a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
<a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
<p id="audio_position"></p>
      </body>
    </html>

media.seekTo

Sets the current position within an audio file.

media.seekTo(milliseconds);

Parameters

  • milliseconds: The position to set the playback position within the audio, in milliseconds.

Description

The media.seekTo executes asynchronously, updating the current
playback position within an audio file referenced by a Media
object. Also updates the Media object’s position parameter.

Supported Platforms

  • Android
  • BlackBerry WebWorks (OS 6.0 and higher)
  • iOS
  • Windows Phone 7 and 8
  • Tizen
  • Windows 8

Quick Example

// Audio player
//
var my_media = new Media(src, onSuccess, onError);
    my_media.play();
// SeekTo to 10 seconds after 5 seconds
setTimeout(function() {
    my_media.seekTo(10000);
}, 5000);

Full Example

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
      "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
<title>Media Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-x.x.x.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
// Play audio
//
function playAudio(src) {
// Create Media object from src
my_media = new Media(src, onSuccess, onError);
// Play audio
my_media.play();
// Update media position every second
mediaTimer = setInterval(function() {
    // get media position
    my_media.getCurrentPosition(
// success callback
function(position) {
    if (position > -1) {

setAudioPosition(position + " sec");
    }
},
// error callback
function(e) {
    console.log("Error getting pos=" + e);
}
    );
}, 1000);
// SeekTo to 10 seconds after 5 seconds
setTimeout(function() {
    my_media.seekTo(10000);
}, 5000);
}
// Stop audio
//
function stopAudio() {
if (my_media) {
    my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
// onSuccess Callback
//
function onSuccess() {
console.log("playAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: '    + error.code    + '\n' +
      'message: ' + error.message + '\n');
}
// Set audio position
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
</script>
      </head>
      <body>
<a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
<a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
<p id="audio_position"></p>
      </body>
    </html>

BlackBerry WebWorks Quirks

  • Not supported on BlackBerry OS 5 devices.

media.setVolume

Set the volume for an audio file.

media.setVolume(volume);

Paramters

  • volume: The volume to set for playback. The value must be within the range of 0.0 to 1.0.

Description

Function media.setVolume is an asynchronous function that sets the volume during audio playback.

Supported Platforms

  • Android
  • iOS

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();
    // Mute volume after 2 seconds
    setTimeout(function() {
my_media.setVolume('0.0');
    }, 2000);
    // Set volume to 1.0 after 5 seconds
    setTimeout(function() {
my_media.setVolume('1.0');
    }, 5000);
}

Full Example

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
<title>Media Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-x.x.x.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
// Play audio
//
function playAudio(src) {
// Create Media object from src
my_media = new Media(src, onSuccess, onError);
// Play audio
my_media.play();
// Update my_media position every second
if (mediaTimer == null) {
    mediaTimer = setInterval(function() {
// get my_media position
my_media.getCurrentPosition(
    // success callback
    function(position) {

if (position > -1) {

setAudioPosition((position) + " sec");

}
    },
    // error callback
    function(e) {

console.log("Error getting pos=" + e);

setAudioPosition("Error: " + e);
    }
);
    }, 1000);
}
}
// Set audio volume
//
function setVolume(volume) {
if (my_media) {
    my_media.setVolume(volume);
}
}
// Stop audio
//
function stopAudio() {
if (my_media) {
    my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
// onSuccess Callback
//
function onSuccess() {
console.log("playAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: '    + error.code    + '\n' + 
      'message: ' + error.message + '\n');
}
// Set audio position
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
</script>
      </head>
      <body>
<a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
<a href="#" class="btn large" onclick="setVolume('0.0');">Mute Audio</a>
<a href="#" class="btn large" onclick="setVolume('1.0');">Unmute Audio</a>
<a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
<p id="audio_position"></p>
      </body>
    </html>

media.startRecord

Starts recording an audio file.

media.startRecord();

Description

The media.startRecord method executes synchronously, starts a
recording for an audio file.

Supported Platforms

  • Android
  • BlackBerry WebWorks (OS 5.0 and higher)
  • iOS
  • Windows Phone 7 and 8
  • Windows 8

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);
});
    // Record audio
    mediaRec.startRecord();
}

Full Example

<!DOCTYPE html>
<html>
  <head>
    <title>Device Properties Example</title>
    <script type="text/javascript" charset="utf-8" src="cordova-x.x.x.js"></script>
    <script type="text/javascript" charset="utf-8">
    // Wait for device API libraries to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);
    // Record audio
    //
    function recordAudio() {
var src = "myrecording.amr";
var mediaRec = new Media(src, onSuccess, onError);
// Record audio
mediaRec.startRecord();
// Stop recording after 10 sec
var recTime = 0;
var recInterval = setInterval(function() {
recTime = recTime + 1;
setAudioPosition(recTime + " sec");
if (recTime >= 10) {
    clearInterval(recInterval);
    mediaRec.stopRecord();
}
}, 1000);
    }
    // device APIs are available
    //
    function onDeviceReady() {
recordAudio();
    }
    // onSuccess Callback
    //
    function onSuccess() {
console.log("recordAudio():Audio Success");
    }
    // onError Callback
    //
    function onError(error) {
alert('code: '    + error.code    + '\n' +
  'message: ' + error.message + '\n');
    }
    // Set audio position
    //
    function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
    }
    </script>
  </head>
  <body>
    <p id="media">Recording audio...</p>
    <p id="audio_position"></p>
  </body>
</html>

Android Quirks

  • Android devices record audio in Adaptive Multi-Rate format. The specified file should end with a .amr extension.

BlackBerry WebWorks Quirks

  • BlackBerry devices record audio in Adaptive Multi-Rate format. The specified file must end with a .amr extension.

iOS Quirks

  • iOS only records to files of type .wav and returns an error if the file name extension is not correct.
  • If a full path is not provided, the recording is placed in the application’s documents/tmp directory. This can be accessed via the File API using LocalFileSystem.TEMPORARY. Any subdirectory specified at record time must already exist.
  • Files can be recorded and played back using the documents URI:

    var myMedia = new Media("documents://beer.mp3")
    

Tizen Quirks

  • Not supported on Tizen devices.

media.stop

Stops playing an audio file.

media.stop();

Description

The media.stop method executes synchronously to stop playing an
audio file.

Supported Platforms

  • Android
  • BlackBerry WebWorks (OS 5.0 and higher)
  • iOS
  • Windows Phone 7 and 8
  • Tizen
  • Windows 8

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.stop();
    }, 10000);
}

Full Example

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
      "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
<title>Media Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-x.x.x.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
// Play audio
//
function playAudio(src) {
// Create Media object from src
my_media = new Media(src, onSuccess, onError);
// Play audio
my_media.play();
// Update my_media position every second
if (mediaTimer == null) {
    mediaTimer = setInterval(function() {
// get my_media position
my_media.getCurrentPosition(
    // success callback
    function(position) {

if (position > -1) {

setAudioPosition((position) + " sec");

}
    },
    // error callback
    function(e) {

console.log("Error getting pos=" + e);

setAudioPosition("Error: " + e);
    }
);
    }, 1000);
}
}
// Pause audio
//
function pauseAudio() {
if (my_media) {
    my_media.pause();
}
}
// Stop audio
//
function stopAudio() {
if (my_media) {
    my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
// onSuccess Callback
//
function onSuccess() {
console.log("playAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: '    + error.code    + '\n' +
      'message: ' + error.message + '\n');
}
// Set audio position
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
</script>
      </head>
      <body>
<a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
<a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
<a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
<p id="audio_position"></p>
      </body>
    </html>

media.stopRecord

Stops recording an audio file.

media.stopRecord();

Description

The media.stopRecord method executes synchronously, stopping the
recording of an audio file.

Supported Platforms

  • Android
  • BlackBerry WebWorks (OS 5.0 and higher)
  • iOS
  • Windows Phone 7 and 8
  • Windows 8

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);
}
    );
    // Record audio
    mediaRec.startRecord();
    // Stop recording after 10 seconds
    setTimeout(function() {
mediaRec.stopRecord();
    }, 10000);
}

Full Example

<!DOCTYPE html>
<html>
  <head>
    <title>Device Properties Example</title>
    <script type="text/javascript" charset="utf-8" src="cordova-x.x.x.js"></script>
    <script type="text/javascript" charset="utf-8">
    // Wait for device API libraries to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);
    // Record audio
    //
    function recordAudio() {
var src = "myrecording.mp3";
var mediaRec = new Media(src, onSuccess, onError);
// Record audio
mediaRec.startRecord();
// Stop recording after 10 sec
var recTime = 0;
var recInterval = setInterval(function() {
recTime = recTime + 1;
setAudioPosition(recTime + " sec");
if (recTime >= 10) {
    clearInterval(recInterval);
    mediaRec.stopRecord();
}
}, 1000);
    }
    // device APIs are available
    //
    function onDeviceReady() {
recordAudio();
    }
    // onSuccess Callback
    //
    function onSuccess() {
console.log("recordAudio():Audio Success");
    }
    // onError Callback
    //
    function onError(error) {
alert('code: '    + error.code    + '\n' +
  'message: ' + error.message + '\n');
    }
    // Set audio position
    //
    function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
    }
    </script>
  </head>
  <body>
    <p id="media">Recording audio...</p>
    <p id="audio_position"></p>
  </body>
</html>

Tizen Quirks

  • Not supported on Tizen devices.

MediaError

A MediaError object is returned to the mediaError callback
function when an error occurs.

Properties

  • code: One of the predefined error codes listed below.
  • message: An error message describing the details of the error.

Constants

  • MediaError.MEDIA_ERR_ABORTED
  • MediaError.MEDIA_ERR_NETWORK
  • MediaError.MEDIA_ERR_DECODE
  • MediaError.MEDIA_ERR_NONE_SUPPORTED

Description

The MediaError object is passed to a mediaError callback function
when an error occurs.


mediaError

A user-specified callback function that executes when there is an
error in media functions.

function(error) {
    // Handle the error
}

Parameters

  • error: The error returned by the device. (MediaError)

上一篇:InAppBrowser

下一篇:Notification

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!