我在StackOverflow上找到了很多关于这个问题的潜在解决方案,但似乎没有什么能解决它.我正在尝试使用我的Cordova(3.5)应用程序中播放mp3文件org.apache.cordova.media@0.2.10
var sound = new Media('audio/el/hello.mp3');
sound.play()
Run Code Online (Sandbox Code Playgroud)
但它只是不会播放,我在LogCat中收到以下错误
MediaPlayer error (1, -2147483648)
Run Code Online (Sandbox Code Playgroud)
我尝试在本地提供文件夹,以下工作指向同一个文件
var sound = new Media('http://10.0.2.2:9999/www/audio/el/hello.mp3');
sound.play()
Run Code Online (Sandbox Code Playgroud)
这表明它不是因为文件有编码问题.
我无法使用最新版本的media插件,因为deviceready事件永远不会触发.
更新:我刚尝试将文件解压缩到持久存储并从那里播放它们,我得到了同样的错误.
更新:单步执行AudioPlayer.java源代码似乎该www目录不是资产的一部分,因为以下调用将抛出FileNotFoundExceptionwheref == "www/el/hello.mp3"
fd = this.handler.cordova.getActivity().getAssets().openFd(f);
Run Code Online (Sandbox Code Playgroud)
但是,如果我将文件直接放在assets文件夹中,那么它的工作原理.
媒体文件的路径不正确.你必须正确地获得路径:
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();
Run Code Online (Sandbox Code Playgroud)
在android上,您只需要具有正确的www文件夹路径。
Android:
var media = new Media("/android_asset/www/audio/el/hello.mp3",
successFunction,
errorFunction
);
Run Code Online (Sandbox Code Playgroud)
如果您的应用程序也要在iOS上运行,则需要/android_asset/www/动态添加,因为iOS不需要它。
iOS:
var media = new Media("audio/el/hello.mp3",
successFunction,
errorFunction
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2813 次 |
| 最近记录: |