получать только аудиофайлы с устройства хранения с помощью ioni c 4 cordova - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь создать аудиоплеер с платформой Ioni c (v. 4). Следует использовать только локальные аудиофайлы, хранящиеся на телефоне пользователя. Мне нужно получить только аудио файлы с устройства (FileEntry или полный путь).

1 Ответ

0 голосов
/ 28 февраля 2020

Возможно, вам не понадобятся плагины, поскольку веб-API поддерживают загрузку файлов с устройств довольно широко. Вот что вы можете сделать:

html: добавить кнопку Ioni c и поместить внутри нее файл ввода.

<ion-button expand="full">
  <ion-icon lazy="true" slot="start" name="musical-notes"></ion-icon>
  <ion-label slot="end">Upload Sound</ion-label>
  <input type="file" (change)="loadSoundFileFromDevice($event)" id="file-input" accept="audio/mpeg, audio/wav">
</ion-button>

Обратите внимание, что вы можете ограничить определенные типы файлов, используя типы пантомимы. См. Здесь примеры: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types

ts: использовать API FileReader.

loadSoundFileFromDevice = (event) => {
  if (!event.target.files[0]) return;
  if (!file.type.match('audio')) return;
  const file = event.target.files[0];
  // do the blob:
  let blobReader = new FileReader();
  blobReader.readAsArrayBuffer(file);
  blobReader.onload = () => {
    let blob: Blob = new Blob([new Uint8Array((blobReader.result as ArrayBuffer))]);
    let blobURL: string = URL.createObjectURL(blob);
    // do the rest with the actual file
  };
  // handle errors:
  blobReader.onerror = (error) => {
    this.foundation.handleError(error);
  };
};

Я не тестировал этот код, но теоретически, как только вы получили файл BLOB-объекта вы должны иметь возможность использовать его в теге <audio>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...