cordova-плагин-media
Этот плагин предоставляет возможность записи и воспроизведения аудиофайлов на устройстве.
ПРИМЕЧАНИЕ: Текущая реализация не соответствует спецификации W3C для захвата медиа и предоставлена только для удобства. Будущая реализация будет соответствовать последней спецификации W3C и может устареть текущие API.
Этот плагин определяет глобальный Media Конструктор.
Несмотря на то, что он находится в глобальной области, он недоступен до события deviceready.
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(Media);
}
Сообщайте о проблемах с этим плагином на форуме отладки Apache Cordova
Установка
cordova plugin add cordova-plugin-media
Поддерживаемые платформы
- Android
- BlackBerry 10
- iOS
- Windows Phone 7 и 8
- Tizen
- Windows 8
- Windows
- Браузер
Особенности Windows Phone
- Одновременно можно воспроизводить только один медиафайл.
Медиа
var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]);
Параметры
src: URI, содержащий аудиоконтент. (DOMString)
mediaSuccess: (Необязательно) Обработчик, который выполняется после завершения текущего действия воспроизведения, записи или остановки объектом
Media. (Функция)mediaError: (Необязательно) Обработчик, который выполняется при возникновении ошибки. (Функция)
mediaStatus: (Необязательно) Обработчик, который выполняется для указания изменений состояния. (Функция)
ПРИМЕЧАНИЕ: cdvfile путь поддерживается как src параметр:
var my_media = new Media('cdvfile://localhost/temporary/recording.mp3', ...);
Константы
Следующие константы передаются как единственный параметр в mediaStatus обратный вызов:
-
Media.MEDIA_NONE= 0; -
Media.MEDIA_STARTING= 1; -
Media.MEDIA_RUNNING= 2; -
Media.MEDIA_PAUSED= 3; -
Media.MEDIA_STOPPED= 4;
Методы
media.getCurrentAmplitude: Возвращает текущую позицию в аудиофайле.media.getCurrentPosition: Возвращает текущую позицию в аудиофайле.media.getDuration: Возвращает длительность аудиофайла.media.play: Запуск или возобновление воспроизведения аудиофайла.media.pause: Приостановить воспроизведение аудиофайла.media.pauseRecord: Приостановить запись аудиофайла.media.release: Освобождает системные аудиоресурсы.media.resumeRecord: Возобновить запись аудиофайла.media.seekTo: Перемещает позицию в аудиофайле.media.setVolume: Устанавливает громкость для аудиовоспроизведения.media.startRecord: Начать запись аудиофайла.media.stopRecord: Остановить запись аудиофайла.media.stop: Остановить воспроизведение аудиофайла.
Дополнительные параметры только для чтения
-
position: Позиция в аудиовоспроизведении, в секундах.
- Не обновляется автоматически во время воспроизведения; вызовите
getCurrentPositionдля обновления.
- Не обновляется автоматически во время воспроизведения; вызовите
duration: Длительность медиа, в секундах.
media.getCurrentAmplitude
Возвращает текущую амплитуду текущей записи.
media.getCurrentAmplitude(mediaSuccess, [mediaError]);
Поддерживаемые платформы
- Android
- iOS
Параметры
mediaSuccess: Обработчик, которому передаётся текущая амплитуда (0.0 - 1.0).
mediaError: (Необязательно) Обработчик, который выполняется при возникновении ошибки.
Быстрый пример
// 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);
media.getCurrentPosition
Возвращает текущую позицию в аудиофайле. Также обновляет параметр Media объекта position.
media.getCurrentPosition(mediaSuccess, [mediaError]);
Параметры
mediaSuccess: Обработчик, которому передаётся текущая позиция в секундах.
mediaError: (Необязательно) Обработчик, который выполняется при возникновении ошибки.
Быстрый пример
// 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);
media.getDuration
Возвращает длительность аудиофайла в секундах. Если длительность неизвестна, возвращает значение -1.
media.getDuration();
Быстрый пример
// 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);
media.pause
Приостанавливает воспроизведение аудиофайла.
media.pause();
Быстрый пример
// 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);
}
media.pauseRecord
Приостанавливает запись аудиофайла.
media.pauseRecord();
Поддерживаемые платформы
- iOS
Быстрый пример
// 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();
// Pause Recording after 5 seconds
setTimeout(function() {
my_media.pauseRecord();
}, 5000);
}
media.play
Запускает или возобновляет воспроизведение аудиофайла.
media.play();
Быстрый пример
// 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
-
numberOfLoops: Передайте этот параметр методу
playдля указания количества воспроизведений медиафайла, например:var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3") myMedia.play({ numberOfLoops: 2 }) -
playAudioWhenScreenIsLocked: Передайте этот параметр методу
playдля указания, нужно ли разрешить воспроизведение, когда экран заблокирован. Если установленоtrue(значение по умолчанию), состояние аппаратной кнопки отключения звука игнорируется, например:var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3") myMedia.play({ playAudioWhenScreenIsLocked : false }) -
порядок поиска файла: Когда предоставляется только имя файла или простой путь, iOS ищет файл в каталоге
www, а затем в каталоге приложенияdocuments/tmp.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
Освобождает системные аудиоресурсы. Это особенно важно для Android, поскольку количество экземпляров OpenCore для воспроизведения медиа ограничено. Приложения должны вызывать функцию release для любого ресурса Media, который больше не нужен.
media.release();
Быстрый пример
// Audio player // var my_media = new Media(src, onSuccess, onError); my_media.play(); my_media.stop(); my_media.release();
media.resumeRecord
Возобновить запись аудиофайла.
media.resumeRecord();
Поддерживаемые платформы
- iOS
Быстрый пример
// 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();
// Pause Recording after 5 seconds
setTimeout(function() {
my_media.pauseRecord();
}, 5000);
// Resume Recording after 10 seconds
setTimeout(function() {
my_media.resumeRecord();
}, 10000);
}
media.seekTo
Устанавливает текущую позицию в аудиофайле.
media.seekTo(milliseconds);
Параметры
- milliseconds: Позиция, в миллисекундах, для установки позиции воспроизведения в аудио.
Быстрый пример
// 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);
Особенности BlackBerry 10
- Не поддерживается на устройствах BlackBerry OS 5.
media.setVolume
Установить громкость для аудиофайла.
media.setVolume(volume);
Параметры
- volume: Громкость для воспроизведения. Значение должно быть в диапазоне от 0,0 до 1,0.
Поддерживаемые платформы
- Android
- iOS
Быстрый пример
// 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);
}
media.startRecord
Начинает запись аудиофайла.
media.startRecord();
Поддерживаемые платформы
- Android
- iOS
- Windows Phone 7 и 8
- Windows
Быстрый пример
// 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();
}
Особенности Android
- Устройства Android записывают аудио в формате Adaptive Multi-Rate. Указанный файл должен иметь расширение .amr.
- Устройства аппаратного управления громкостью связаны с громкостью медиа, пока существуют объекты Media. После того, как последний созданный объект Media вызовет
release(), устройства управления громкостью вернутся к своему поведению по умолчанию. Контролы также сбрасываются при переходе на другую страницу, так как это приводит к освобождению всех объектов Media.
Особенности iOS
iOS записывает только в файлы типа .wav и возвращает ошибку, если расширение имени файла не соответствует.
Если полный путь не указан, запись выполняется в каталог приложения
documents/tmp. Это можно получить через APIFileс помощьюLocalFileSystem.TEMPORARY. Любой подкаталог, указанный во время записи, должен уже существовать.-
Файлы могут быть записаны и воспроизведены с использованием URI документов:
var myMedia = new Media("documents://beer.mp3")
Особенности Windows
Устройства Windows могут использовать форматы MP3, M4A и WMA для записанного аудио. Однако в большинстве случаев невозможно использовать MP3 для записи звука на устройствах Windows Phone 8.1, потому что кодек MP3 не поставляется с Windows Phone не поставляется с Windows Phone.
Если полный путь не указан, запись выполняется в каталог
AppData/temp. Это можно получить через APIFileс помощьюLocalFileSystem.TEMPORARYилиms-appdata:///temp/<filename>URI.Любой подкаталог, указанный во время записи, должен уже существовать.
Особенности Tizen
- Не поддерживается на устройствах Tizen.
media.stop
Останавливает воспроизведение аудиофайла.
media.stop();
Быстрый пример
// 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);
}
media.stopRecord
Останавливает запись аудиофайла.
media.stopRecord();
Поддерживаемые платформы
- Android
- iOS
- Windows Phone 7 и 8
- Windows
Быстрый пример
// 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);
}
Особенности Tizen
- Не поддерживается на устройствах Tizen.
MediaError
Объект MediaError возвращается в mediaError обратный вызов при возникновении ошибки.
Свойства
code: Одна из предопределённых кодов ошибок, перечисленных ниже.
message: Сообщение об ошибке, описывающее подробности ошибки.
Константы
-
MediaError.MEDIA_ERR_ABORTED= 1 -
MediaError.MEDIA_ERR_NETWORK= 2 -
MediaError.MEDIA_ERR_DECODE= 3 -
MediaError.MEDIA_ERR_NONE_SUPPORTED= 4
© 2012, 2013, 2015 The Apache Software Foundation
Licensed under the Apache License 2.0.
https://cordova.apache.org/docs/en/6.x/reference/cordova-plugin-media/index.html