.
API.
API.
35-40 .
:
HTML
<audio id="successSound"
src="/android_asset/www/audio/correct.mp3"
type="audio/mpeg">
</audio>
var my_media = null;
var mediaTimer = null;
function playAudio(id) {
var audioElement = document.getElementById(id);
var src = audioElement.getAttribute('src');
my_media = new Media(src, onSuccess, onError);
my_media.play();
if (mediaTimer == null) {
mediaTimer = setInterval(function() {
my_media.getCurrentPosition(
function(position) {
if (position > -1) {
setAudioPosition((position) + " sec");
}
},
function(e) {
console.log("Error getting pos=" + e);
setAudioPosition("Error: " + e);
}
);
}, 1000);
}
}
function pauseAudio() {
if (my_media) {
my_media.pause();
}
}
function stopAudio() {
if (my_media) {
my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
function onSuccess() {
}
function onError(error) {
switch(error.code){
case MediaError.MEDIA_ERR_ABORTED:
alert('MEDIA_ERR_ABORTED code: ' + error.code);
break;
case MediaError.MEDIA_ERR_NETWORK:
alert('MEDIA_ERR_NETWORK code: ' + error.code);
break;
case MediaError.MEDIA_ERR_DECODE:
alert('MEDIA_ERR_DECODE code: ' + error.code);
break;
case MediaError.MEDIA_ERR_NONE_SUPPORTED:
alert('MEDIA_ERR_NONE_SUPPORTED code: ' + error.code);
break;
default:
{
alert('Un Known: ' + error.code);
navigator.notification.vibrate(2000);
playAudio("errorSound");
}
}
}
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
:
var failCounter = 0;
var successCounter = 0;
var srcSuccess = "/android_asset/www/audio/correct.mp3";
var srcFail = "/android_asset/www/audio/error_long.mp3";
var my_media_success = null;
var my_media_fail = null;
function playAudioSuccess() {
if (my_media_success != null) {
my_media_success.release();
}
successCounter = successCounter + 1;
try {
my_media_success = new Media(srcSuccess, onSuccess, onError);
my_media_success.play();
} catch (err) {
alert(err);
}
}
function playAudioFail() {
try {
if (my_media_fail != null) {
my_media_fail.release();
}
failCounter = failCounter + 1;
my_media_fail = new Media(srcFail, onSuccess, onError);
my_media_fail.play();
} catch (err) {
alert(err);
}
}
function pauseAudio() {
if (my_media) {
my_media.pause();
}
}
function stopAudio(my_media) {
if (my_media) {
my_media.stop();
}
}
function onSuccess() {
}
function onError(error) {
switch(error.code){
case MediaError.MEDIA_ERR_ABORTED:
alert('MEDIA_ERR_ABORTED code: ' + error.code);
break;
case MediaError.MEDIA_ERR_NETWORK:
alert('MEDIA_ERR_NETWORK code: ' + error.code);
break;
case MediaError.MEDIA_ERR_DECODE:
alert('MEDIA_ERR_DECODE code: ' + error.code);
break;
case MediaError.MEDIA_ERR_NONE_SUPPORTED:
alert('MEDIA_ERR_NONE_SUPPORTED code: ' + error.code);
break;
default:
{
alert('Un Known: ' + error.code);
navigator.notification.vibrate(1000);
setTimeout(function() {
playAudioFail();
}, delayInMilliseconds);
}
}
}
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
!
1) getElementById, src, .
2) ()
3) , ...
4) setAudioPosition, .
( ), , , .
5) , , , , ,
- , , ,
navigator.notification.vibrate(1000);
setTimeout(function() {
playAudioFail();
}, delayInMilliseconds);
6) release,
(leasson ) ,
, .
if (my_media_fail != null) {
my_media_fail.release();
}
7) javascript try catch ))
W3School