我无法在Android上获得包内音频文件的持续时间。
我试过这个:
String stringDuration;
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
try {
mmr.setDataSource(fullpath);
stringDuration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
}
catch (IllegalArgumentException e) {
debugalert("androidbridgeGetdurationofsound IllegalArgumentException error getting duration: " + e.getMessage());
return 0;
}
catch (Exception e) {
debugalert("androidbridgeGetdurationofsound Exception error getting duration: " + e.getMessage());
return 0;
}
finally {
mmr.release();
}它总是在IllegalArgumentException异常下失败。我不确定路径是否不正确(尝试了几个变体),该MediaMetadataRetriever类不支持媒体(尝试过MediaMetadataRetriever和wav)。音频本身在Android上播放得很好。
我尝试过的几个路径变体是:
我使用cocos2d-xv3.6。没有固有的(工作,afaik)方法来获取音频文件的持续时间(尝试使用AudioEngine)。以上代码来自Cocos2D-x的C++端通过JNI调用的活动的静态方法。
发布于 2015-07-23 04:26:08
原来Cocos2D-x不知何故给了我不正确的资产文件路径!我使用单例文件类来获取C++端的确切路径,并将这些路径发送到平台端(iOS或Android)。总是在iOS上工作。出于某种原因,它不适用于Android系统。
Android端的一个工作路径是:Assets/sounds/_TESTSOUNDWAVE.wav。
我必须从字符串(fullpath = fullpath.replaceAll("^assets/", "");)的开头专门删除"assets/“。也许我的设置很有趣,或者Cocos2d-x有问题。谁知道呢。
我如何计算出正确的路径是递归地列出包中的所有内容:How can I get a directory listing of resources from my Android app?
https://stackoverflow.com/questions/31577549
复制相似问题