如果你使用了CRI Atom文件库的默认设置,部分安卓设备可能生成噪音(断续的声音) 或者不会播放音频。
该问题可以如以下来调整声音解码缓冲时间,以得到解决。
解决方法: 调整声音解码缓冲时间
在部分设备中,默认的声音解码缓冲时间不够长, 导致出现噪音或无声的问题。
如需避免此问题,你可以调整以下 CriWare.CriWareInitializer 组件设置 来延长声音解码缓冲时间,直到解决该问题为止。
以下图片显示了Unity Editor的Inspector中的 CriWare.CriWareInitializer 。
被红色方框包围的部分从上到下显示了
- (a) Buffering Time(缓冲时间): 输出缓冲时间(毫秒)
- (b) Start Buffering Time(起始缓冲时间): 回放起始缓冲时间(毫秒)
以下数值为默认设置。
- (a) Buffering Time: 133 (毫秒)
- (b) Start Buffering Time: 100 (毫秒)
在(a)中,请调整声音解码缓冲时间的大小。 在(b)中,请指定开始回放前累积的音频数据的数值(毫秒)。
所延长的缓冲时间将根据设备型号以及应用程序的负载状态而定。 你必须为每个设备都设定一个合适的数值。
请以同样的数值反复增加 (a) 和 (b) 直到没有噪音并且声音能够正常播放为止。
接着,如果你使用了 安卓的低延迟声音回放 , 音频回放将以(b)数值延迟。 请仅减少(b)数值以免造成声音断断续续的情况。
范例设置
CRI已在以下设备中确认噪音(断续的声音)。
- ARROWS X LTE F-05D (OS 4.0.3)
- ARROWS X F-10D (OS 4.0.3)
举F-05D为例,我们已证实以下在CRI SDK的设置将不会生成噪音。
- (a) Buffering Time: 200 (毫秒)
- (b) Start Buffering Time: 150 (毫秒)
我们同样在以下设备中确认无回放声音。
- REGZA Tablet AT700/35D AT200 (OS 4.0.3)
我们已确认AT200的ADX音频将在以下设置下 进行播放。
- (a) Buffering Time: 220 (毫秒)
- (b) Start Buffering Time: 220 (毫秒)
总的来说,请使用默认数值。 只有在一个特定设备无法播放声音或声音断断续续的情况下,在应用程序中选择设备模型 并且调整缓冲时间。
补充
# 使用代码来识别设备模型的范例代码
- 如需使用代码来识别一个模型,举ARROWS X LTE F-05D为例, 你可以确认android.os.Build中的MODEL是否为"F-05D"。 以下显示了测试于Unity的范例代码。
{
AndroidJavaClass clsUnity;
string MODEL_ID;
clsUnity = new AndroidJavaClass("android.os.Build");
MODEL_ID = clsUnity.GetStatic<string>("MODEL");
int ret = MODEL_ID.CompareTo("F-05D");
if (ret == 0) {
initializer.atomConfig.androidBufferingTime = 200;
initializer.atomConfig.androidStartBufferingTime = 150;
}
}
# 减少回放开始的延迟
- 本部分描述了利用增加声音解码缓冲时间的长度,以减少噪音。 与此同时,你可以将默认数值在不会生成噪音的范围内减少, 以减少回放开始的延迟。 在这之前,请在一台真正的设备上确认是否能顺利回放。