Протокол приложения нельзя использовать для ссылки на аудио- и видеофайлы в упакованном приложении. Я считаю, что это ограничение безопасности, чтобы предотвратить чтение контента между приложениями. Вам нужно либо использовать тег audio в своем HTML, либо использовать XMLHttpRequest. Что-то вроде следующего (пример видео):
var xhr = new XMLHttpRequest();
xhr.open('GET', 'myvid.ogg');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
videoblob = new Blob([xhr.response], { type: 'video/ogg' });
var openingVideo = new MozActivity({
name: "open",
data: {
type: [
"video/webm",
"video/mp4",
"video/3gpp",
"video/mkv",
"video/ogg"
],
blob: videoblob
}
});
};
xhr.onerror = function() {
console.log('Error loading test video', xhr.error.name);
};
Если файл находится на SDCard, у вас есть несколько вариантов:
Вы можете просто использовать действие выбора и позволить пользователю найти его:
var act = new MozActivity({
name: 'pick',
data: {
type: 'audio/ogg'
}
});
или вы можете установить разрешение на чтение и запись на SD-карте в манифесте, прочитать его вручную и воспроизвести с аудиотегом или с открытой активностью (очень небольшая проверка ошибок).
var sdcard = navigator.getDeviceStorage('sdcard');
//assumes sample.ogg is located at the top of the sdcard
var request = sdcard.get("sample.ogg");
request.onsuccess = function () {
var file = this.result;
console.log("Get the file: " + file.name);
var mysrc = URL.createObjectURL(file);
var audio1 = new Audio();
audio1.onerror = function(e) {
console.log(" error playing file ");
}
audio1.src = mysrc;
audio1.type = "video/ogg";
console.log( "audio src " + audio1.src);
audio1.play();
URL.revokeObjectURL(url);
}
request.onerror = function () {
console.warn("Unable to get the file: ");
}
person
Jason Weathersby
schedule
21.01.2014