这是设备OpenSLES的实现层打印的日志。目测这是哪个山寨机,用error打印日志,然后发布的时候没关闭吧。
如果不影响使用可以暂时忽略。
我现在是使用的边加载边播的模式 确实效率提高很多 谢谢了
你说的边加载边播放具体是指?
比如,第一秒的时候播放1.mp3, 然后播放过程中去preload第二秒要用的2.mp3么?
还是自己实现了文件级别的缓冲处理,就是播放1.mp3的时候只preload部分音频帧,在播放过程中再去缓存剩下的帧?
是哪一种啊?
我用的第一种 对了 目前版本3.13有很多兼容问题 我想是不是能够把android 缓冲移植到3.10版本中去 我试了几次编译都有问题
你是说只想用3.13的Audio? 我假定是,可以参照如下方法:
1. Basically, you need to replace the whole folder from `cocos/audio/android` at v3 branch. And some changes in `cocos/platform/android` there are several JNI methods were added.
2. Java_org_cocos2dx_lib_Cocos2dxHelper.h/.cpp: added two new methods called getDeviceSampleRate, getDeviceAudioBufferSizeInFrames, you could copy it from v3 branch.
3. Cocos2dxHelper.java, look at the `init` method, i added the checking of device sample rate and device buffer size
4. Adds Java_org_cocos2dx_lib_Cocos2dxHelper_nativeSetAudioDeviceInfo to Java_org_cocos2dx_lib_Cocos2dxHelper.cpp since it will be invoked by Cocos2dxHelper.init
5. replace `cocos/audio/android` folder, you simply need to comment 4 lines in AudioEngine-inl.cpp, that's:
static int fdGetter(const std::string& url, off_t start, off_t length)
{
int fd = 0;
// comment these lines begin
// if (cocos2d::FileUtilsAndroid::getObbFile() != nullptr)
// {
// fd = getObbAssetFileDescriptorJNI(url.c_str(), start, length);
// }
// else
// comment these lines end
{
auto asset = AAssetManager_open(cocos2d::FileUtilsAndroid::getAssetManager(), url.c_str(), AASSET_MODE_UNKNOWN);
// open asset as file descriptor
fd = AAsset_openFileDescriptor(asset, start, length);
AAsset_close(asset);
}
if (fd <= 0)
{
ALOGE("Failed to open file descriptor for '%s'", url.c_str());
}
return fd;
};
好的 我去试下
哪些兼容性问题?能否说详细一些?
一个是我使用的是cocosstudio一键配置 导致android-22不兼容android 4.4
另外一个我解决了 是auto指针在std::map的++处理时候也会有不兼容问题 不过和cocos框架无关