我在Android Play商店中有兩個應用程序,至今尚未有任何問題。最近有一個功能在HTC One和Galaxy S4上沒有工作。我已經能夠在Android 4.1.2版本上運行的HTC上試用它。有問題的代碼如下:陣列在HTC One/Galaxy S4上使用Android 4.1.2編寫全零字符
public void loadsine(){
for (int j=0; j<44100; j++){
double val = Math.sin(twopi*j/44100);
AndroidAudioDevice.sigBuffer[j]= (short) (val*sinemax);
}
}
什麼是不是計算一個正弦波的一個週期,並把這些值作爲短於陣列,twopi和sinemax預先定義的常量,而sigBuffer是陣列短褲44100多頭。
這工作正常除了在HTC的一個和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++){}
}
}
而不是無用的爲環我也可以寫例如調試窗口。發生什麼事情是HTC和/或三星的覆蓋問題,或者是4.1.2的問題。我無法讓4.1.2模擬器順便工作,它不會去任何地方。
謝謝您的回答。實際上,sigBuffer只是一個長度爲44100的短路陣列。這個例程只用一個週期的輸出信號來填充sigBuffer陣列。信號生成例程然後將sigBuffer數組中的選擇值複製到Android trackbuffer以實際生成信號。這也可以在HTC one和S4上正常工作 – user2514931