我在StackOverflow上找到了很多关于这个问题的潜在解决方案,但似乎没有什么能解决它。我正在尝试使用org.apache.cordova.media@0.2.10
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);
文件夹中,那么它可以正常工作。
答案 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
);