Приложение на основе Cordova: как воспроизвести аудиофайл из внутренней памяти Android/папки «Музыка»Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Приложение на основе Cordova: как воспроизвести аудиофайл из внутренней памяти Android/папки «Музыка»

Сообщение Anonymous »

Информация о версии:
cordova версия 12.0.0
cordova-media-plugin версия 7.0.0< /p>
cordova-plugin-file версии 8.1.0
cordova-plugin-file-transfer версии 2.0.0
cordova-plugin-wkwebview-file-xhr версия 3.1.1
Android Target SDK = 34
Проблема/вопрос:< /strong>
Мне не удается заставить приложение на основе Cordova воспроизводить файл, загруженный в папку «Внутренняя память/Музыка» устройства Android. Приведенная ниже функция downloadAudio работает правильно и сохраняет файл там (хотя в документации плагина к файлам указано, что это место — SD-карта, но на моем устройстве это работает не так).
  • Может ли медиа-плагин воспроизводиться из папки «file:///storage/emulated/0/Music/[file].mp3»? Похоже, мне нужна ссылка на cdvfile для медиа-плагина, но я не уверен, что формат «cdvfile://» работает и с этим внешним местоположением. Казалось бы, он предназначен только для внутреннего использования в приложении?

РЕДАКТИРОВАТЬ: я получаю сообщение об ошибке, что файл не может быть найден, если я ссылаются на поддельное местоположение, поэтому в отсутствие этой ошибки может показаться, что плагин Media может видеть файл. Однако после удаления синтаксической ошибки плагин Media выдает ошибку «Код 1, подготовка не удалась.: status=0x1». Эта ссылка [https://stackoverflow.com/questions/376 ... rks-on-2-2] кажется связанной, но меня смущает. . нужно лучше это понять.
  • Я не могу получить ни один из методов преобразования URL-адресов (например, toURL выдает мне TypeError: fileTransferInternalUrl.toURL не является функцией) для работы с местоположением моего файла без возврата ошибки, чтобы сгенерировать URL-адрес cdv-файла для медиа-плагина.
< strong>РЕДАКТИРОВАТЬ: Кажется, что URL-адрес моего файла может работать, даже если toURL этого не делает.

[*]Если Медиа-плагин не поддерживает воспроизведение со ссылкой на внешнее местоположение приложения. Можно ли использовать copyTo (и перезаписать существующий файл) из внешнего местоположения во временное внутреннее местоположение, доступное для медиа-плагина? (Документация copyTo, по-видимому, отсутствует в более поздних версиях документации по файловому плагину, и при ее использовании я также сталкиваюсь с ошибками. Можно предоставить более подробную информацию, если это возможно.

Копирование файла с помощью Cordova
не помогло ни мне, ни примеру на
https://cordova .apache.org/docs/en/2.4.0/cordova/file/fileentry/fileentry.html.
Я не получаю никаких ошибок, связанных с разрешениями. Я не думаю, что это возможно. загрузка работала бы, если бы это была проблема с разрешениями (?). Я знаю, что в разрешениях Android были изменения.
Буду очень признателен за любую помощь!
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 (error) //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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»