cordova версия 12.0.0
cordova-media-plugin версия 7.0.0 [ https://cordova.apache.org/docs/en/12.x ... index.html]
cordova-plugin-file версии 8.1.0 [https://cordova.apache.org/docs/en/10.x ... ugin-file/]
cordova-plugin-file-transfer версия 2.0.0 [https://github.com/apache/cordova-plugin-file-transfer]
cordova-plugin-wkwebview-file-xhr версия 3.1.1
Android Target SDK = 34
Проблема/вопрос:
Я пытаюсь получить Cordova- приложение для воспроизведения файла, загруженного в папку «Внутренняя память/Музыка» устройства Android. Приведенная ниже функция downloadAudio работает правильно и сохраняет файл там (хотя в документации плагина к файлам указано, что это место — SD-карта, но на моем устройстве это работает не так).
- Может ли медиа-плагин воспроизводиться из папки «file:///storage/emulated/0/Music/[file].mp3»? Похоже, мне нужна ссылка на cdvfile для медиа-плагина, но я не уверен, что формат «cdvfile://» работает и с этим внешним расположением. Казалось бы, это предназначено только для использования внутри приложения?
- Я не могу получить ни один из методов преобразования URL-адресов (например, toURL выдает мне TypeError: fileTransferInternalUrl.toURL не является функцией) для работать с местоположением моего файла, не возвращая ошибку, чтобы сгенерировать URL-адрес компакт-диска для медиа-плагина.
- Если медиа-плагин не поддерживает воспроизведение со ссылкой на внешнее местоположение приложения, Можно ли использовать copyTo (и перезаписать существующий файл) из внешнего местоположения во временное внутреннее местоположение, доступное медиа-плагину? (Документация copyTo, по-видимому, отсутствует в более поздних версиях документации по файловому плагину, и при ее использовании я также сталкиваюсь с ошибками. Можно предоставить более подробную информацию, если это возможно. [https://stackoverflow.com/questions/ 31548292/copying-a-file-using-cordova] у меня не сработало, как и пример на [https://cordova.apache.org/docs/en/2.4. ... entry.html ].
Будем благодарны за любую помощь!
function downloadAudio (fileTransferWebUrl,thisElement) {
fileTransferWebUrl = encodeURI(fileTransferWebUrl);
if (isAndroidApp == true) {
var fileNameMP3Array = fileTransferWebUrl.split("/");
var fileNameMP3 = fileNameMP3Array[fileNameMP3Array.length-1]; //get file name from web URL
fileTransferInternalUrl = cordova.file.externalRootDirectory + 'Music/' + fileNameMP3; // file:///storage/emulated/0/Music/[file].mp3
}
try {
fileTransfer.download(
fileTransferWebUrl,
fileTransferInternalUrl,
function (entry) {
alert('Download complete to Music/' + fileNameMP3);
},
function(error){ //error
alert("Download error source " + error.source + " download error target " + error.target + " download error code " + error.code + " http_status " + error.http_status + " body " + error.body + " exception " + error.exception);
},
true, //trust all hosts. safer to be false, set to true accepts all security certificates, not recommended for production use
);
}
catch (e) {
alert(e);
}
}
function playDownloadedAudio (fileTransferWebUrl, thisElement) {
var nativePath = "";
fileTransferWebUrl = encodeURI(fileTransferWebUrl);
if (isAndroidApp == true) {
var fileNameMP3Array = fileTransferWebUrl.split("/");
var fileNameMP3 = fileNameMP3Array[fileNameMP3Array.length-1]; //get file name from web URL
fileTransferInternalUrl = cordova.file.externalRootDirectory + 'Music/' + fileNameMP3; //cordova.file.externalRootDirectory
alert(fileTransferInternalUrl); // file:///storage/emulated/0/Music/A_casa_vete_y_cuenta_alli.mp3
}
try {
nativePath = fileTransferInternalUrl; // how do I get this into a path Media plugin recognizes?
my_media = new Media(nativePath,
function () //success;
{ },
function (err) //error
{
alertOK(translate('Error in playback. Please contact support. \n Code: ','text') + error.code + '\n '+translate('Message:','text')+' '+error.message + '\n');
playing = false;
}
);
my_media.play();
}
catch (e) {
alert("error: " + e);
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... rage-music
Мобильная версия