Cordova Media不会播放来自www的mp3

时间:2014-07-08 08:12:49

标签: android cordova

我在StackOverflow上找到了很多关于这个问题的潜在解决方案,但似乎没有什么能解决它。我正在尝试使用org.apache.cordova.media@0.2.10

在我的Cordova(3.5)应用中播放mp3文件
var sound = new Media('audio/el/hello.mp3');
sound.play()

但它不会播放,我在LogCat中收到以下错误

MediaPlayer error (1, -2147483648)

我已尝试在本地提供该文件夹,以下工作指向同一文件

var sound = new Media('http://10.0.2.2:9999/www/audio/el/hello.mp3');
sound.play()

这表明这不是因为文件存在编码问题。

我无法使用最新版本的media插件,因为deviceready事件永远不会触发。

更新:我刚试过将文件解压缩到持久存储并从那里播放它们,我也遇到了同样的错误。

更新:单步执行AudioPlayer.java来源似乎www目录不属于资产,因为以下调用会抛出FileNotFoundException其中{ {1}}

f == "www/el/hello.mp3"

但是,如果我将文件直接放在fd = this.handler.cordova.getActivity().getAssets().openFd(f); 文件夹中,那么它可以正常工作。

2 个答案:

答案 0 :(得分:6)

媒体文件路径不正确。你必须正确地获得路径:

var getPathMedia = function () {
var path = window.location.pathname;
var phoneGapPath = path.substring(0, path.lastIndexOf('/') + 1);
// Return path at www folder
return 'file://' + phoneGapPath;
};
var media = new Media(getPathMedia() + 'media/message.mp3');
media.play();

答案 1 :(得分:5)

在Android上,您只需拥有www文件夹的正确路径。

机器人:

var media = new Media("/android_asset/www/audio/el/hello.mp3",
    successFunction,
    errorFunction
);

如果您的应用也要在iOS上运行,则需要动态添加/android_asset/www/,因为iOS不需要它。

的iOS:

var media = new Media("audio/el/hello.mp3",
    successFunction,
    errorFunction
);