0

我花了几个小时试图让我的 phonegap 应用程序与 mp3 文件一起工作。我已经测试了两个科尔多瓦版本(1.9 和 2.0)。我尝试过使用大于和小于 1MB 的文件。没有任何帮助。来自互联网的文件听起来很好:

my_media = new Media("http://www.example.com/test.mp3");
my_media.play();   

但它不适用于本地文件:

my_media = new Media("/android_asset/www/sounds/test.mp3");
my_media.play();   

Eclipse 中的 LogCat 抛出错误:

09-13 18:55:58.085: W/System.err(7525): java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
09-13 18:55:58.085: W/System.err(7525):     at android.content.res.AssetManager.openAssetFd(Native Method)
09-13 18:55:58.101: W/System.err(7525):     at android.content.res.AssetManager.openFd(AssetManager.java:330)
09-13 18:55:58.101: W/System.err(7525):     at org.apache.cordova.AudioPlayer.startPlaying(AudioPlayer.java:223)
09-13 18:55:58.101: W/System.err(7525):     at org.apache.cordova.AudioHandler.startPlayingAudio(AudioHandler.java:227)
09-13 18:55:58.125: W/System.err(7525):     at org.apache.cordova.AudioHandler.execute(AudioHandler.java:75)
09-13 18:55:58.125: W/System.err(7525):     at org.apache.cordova.api.PluginManager$1.run(PluginManager.java:185)
09-13 18:55:58.125: W/System.err(7525):     at java.lang.Thread.run(Thread.java:1019)

有没有人有任何建议我可能做错了什么?

4

1 回答 1

1

android 的基本概念之一是您的资产文件被压缩并且您不能直接访问它们。利用 :

getAssets().open(mp3FileUrl)

而是获取 mp3 文件的 InputStream

更新:因为您使用的是phonegap,所以我建议您首先将您需要的文件解压缩到您的数据目录,然后您可以直接使用它们。拆包使用:

window.resolveLocalFileSystemURI("file:///android_asset/www/foo.html", onResolveSuccess, onFail);

然后他们用 phonegap 文件 API 复制它。你可以访问你的文件/data/data/packagename/filename

于 2012-09-13T17:51:25.293 回答