如何在Cordova获取mp3信息

时间:2015-01-17 19:28:01

标签: android cordova

使用Apache Cordova为Android创建音乐播放器,我试图从mp3获取歌曲信息(艺术家,专辑)。 我尝试使用目录结构(一个目录从mp3 =专辑,两个up =艺术家),但这是不可靠的。 所以现在我一直在尝试从mp3文件中读取ID3信息以获取艺术家和专辑标签,但我尝试的所有内容都是空白或者崩溃应用程序。任何想法??

document.addEventListener("deviceready", function () {
  window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fsSuccess);

  function fsSuccess(fs){
    console.log(fs);
    var dirURL = fs.root.nativeURL;
    directoryPath = dirURL.replace("file://", "");
    gotPath(directoryPath)
  }
  function gotPath(directoryPath) {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){
    fileSystem.root.getDirectory(directoryPath, {create: false, exclusive: false}, getDirSuccess);
    })
  }
  function getDirSuccess(dirEntry) {
    var directoryReader = dirEntry.createReader();
    directoryReader.readEntries(readerSuccess);
  }
  function readerSuccess(entries) {
    var i;
    for (i=0; i<entries.length; i++) {
        if(entries[i].isDirectory) {
            directoryURL = entries[i].nativeURL;
            directoryPath = directoryURL.replace("file://", "");
            gotPath(directoryPath);
        } if (entries[i].isFile){
            if(entries[i].name.indexOf(".mp3") != -1){
                var fileURL = entries[i].localURL.replace("file://", "");
                ID3.loadTags(fileURL, function() {
                    var tags = ID3.getAllTags(fileURL);
                    alert(tags.artist);
                },
                {
                    tags: ["artist"]
                },
                {
                    dataReader: FileAPIReader(fileEntry.file)

                }); 
            }
        }
    }
  }
}, false);

我尝试使用此库来阅读JavaScript-ID3-Reader的ID3信息。

修改

我能够将这个工作用于单个文件,但我仍然无法在循环浏览文件时尝试获取信息。

这里是从单个文件中获取ID3信息的代码(通过ng-click事件传递所选歌曲):

$scope.getInfo = function (song) {
    filePath = song.nativeURL;
    file_URI = filePath.replace("file://", "");
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
    function gotFS(fileSystem) {
        fileSystem.root.getFile(file_URI, null, gotFileEntry, fail);
    }
    function gotFileEntry(fileEntry) {
        fileEntry.file(gotFile, fail);
    }
    function gotFile(fileEntry){
        ID3.loadTags(fileEntry.localURL, function() {
                var tags = ID3.getAllTags(fileEntry.localURL);
                console.log(tags.artist + " " + tags.album + " " + tags.title + " " + tags.track);
            },
            {
                tags: ["artist", "album", "track", "title"]
            });
    }
    function fail(error) {
        console.log(error.code);
    }
};

0 个答案:

没有答案