Я использую аудиофайлы в своем приложении, которые мне нужно получить в качестве буферного массива. Для этого я позволяю пользователю выбрать файл ( с помощью плагина Ionic / Cordova FileChooser ), а затем получаю URL-адрес, например:
content://com.android.providers.media.documents/document/audio%3A8431
После этого я отправил это в Файл плагина Cordova resolveNativePath
и получил путь вроде:
file:///storage/emulated/0/Prueba interno/Interno, Teddybär, Dreh Dich Um__320kbps.mp3
Здесь я делаю свой audioFileInfo
Объект
audioFileInfo = {name: "Interno, Teddybär, Dreh Dich Um__320kbps.mp3",
originalPath: "content://com.android.providers.media.documents/document/audio%3A8431",
path: "file:///storage/emulated/0/Prueba interno"}
и, наконец, я вызываю filePlugin.readAsArrayBuffer(audioFileInfo.path, audioFileInfo.name)
, чтобы получить массив буферов.
Он работает нормально, когда файл находится во внутренней памяти устройства, но когда файл поступает с SDCard, он не работает, потому что readAsArrayBuffer
возвращает «not found».
SD-карта:
File Chooser URL
content://com.android.externalstorage.documents/document/3D91-1C14%3AM%C3%BAsica%20Dana%2F1%20-%20Teddyb%C3%A4r%2C%20Teddyb%C3%A4r%2C%20Dreh%20Dich%20Um__320kbps.mp3
resolveNativePath:
file:///sdcard/Música Dana/1 - Teddybär, Teddybär, Dreh Dich Um__320kbps.mp3
audioFileInfo:
audioFileInfo = {
name :"1 - Teddybär, Teddybär, Dreh Dich Um__320kbps.mp3"
originalPath : "content://com.android.externalstorage.documents/document/3D91-1C14%3AM%C3%BAsica%20Dana%2F1%20-%20Teddyb%C3%A4r%2C%20Teddyb%C3%A4r%2C%20Dreh%20Dich%20Um__320kbps.mp3",
path : "file:///sdcard/Música Dana"
}
readAsArrayBuffer:
FileError {code: 1, message: "NOT_FOUND_ERR"}
Я попробовал FilePlugins resolveLocalFilesystemUrl()
и получил Entry
объект:
{
filesystem: {
name: "content",
root: {
filesystem {
name: "content",
root: "...."
}
},
fullPath: "/",
isDirectory: true,
isFile: false,
name: "",
nativeURL: "content://",
},
fullPath: "/com.android.externalstorage.documents/document/3D91-1C14:Música Dana/1 - Teddybär, Teddybär, Dreh Dich Um__320kbps.mp3",
isDirectory: false,
isFile: true,
name: "1 - Teddybär, Teddybär, Dreh Dich Um__320kbps.mp3",
nativeURL: "content://com.android.externalstorage.documents/document/3D91-1C14%3AM%C3%BAsica%20Dana%2F1%20-%20Teddyb%C3%A4r%2C%20Teddyb%C3%A4r%2C%20Dreh%20Dich%20Um__320kbps.mp3",
}
Bue Я понятия не имею, что использовать в качестве path
в первом параметре функции readAsArrayBuffer
.
Если я использую fullPath
и name
, выдается ошибка кодирования .
Если я получу только «путь» без имени из fullPath
, он также выдаст ошибку кодирования .
У кого-нибудь был подобный опыт?