我在 Android Play 商店中有两个应用程序,到目前为止没有任何问题。最近,一项功能在 HTC one 和 Galaxy S4 上还没有工作。我已经能够在运行 Android 版本 4.1.2 的 HTC 上试用它。有问题的代码如下:
public void loadsine(){
for (int j=0; j<44100; j++){
double val = Math.sin(twopi*j/44100);
AndroidAudioDevice.sigBuffer[j]= (short) (val*sinemax);
}
}
所做的是计算一个正弦波的周期并将值作为一个short 放入一个数组中,twopi 和sinemax 是先前定义的常量,而sigBuffer 是44100 long 的short 数组。
这工作正常,除了在 HTC 1 和 S4 上阵列用零填充。我发现我可以通过在循环中浪费几个处理周期来使其工作,如下所示:
public void loadsine(){
for (int j=0; j<44100; j++){
double val = Math.sin(twopi*j/44100); //val between -1 and +1
AndroidAudioDevice.sigBuffer[j]= (short) (val*sinemax);
for (int i=0; i<4; i++){}
}
}
例如,我也可以写入调试窗口,而不是无用的 for循环。发生了什么,是 HTC 和/或三星的覆盖导致问题还是 4.1.2 问题。顺便说一句,我无法让 4.1.2 模拟器工作,它哪儿也去不了。