8

アプリの使用中にバッファ オーバーフローが発生しRECORDINGます。録音は で実行されServiceます。からこのメッセージを受け取った理由がわかりませんでしたAudioFlinger

以下では、AudioRecordオブジェクトをインスタンス化し、そのコールバックを設定します。

bufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);
aRecorder = new AudioRecord(audioSource, sampleRate, channelConfig, audioFormat, bufferSize);

aRecorder.setRecordPositionUpdateListener(updateListener);

bytesPerSample = bitsPerSample / 8;
int bytesPerFrame = nChannels * bytesPerSample;
framePeriod = bufferSize / bytesPerFrame; // nr of frames that can be kept in a bufferSize dimension    
int result = aRecorder.setPositionNotificationPeriod(framePeriod);    
buffer = new byte[bufferSize];

audioRecord コールバック:

private AudioRecord.OnRecordPositionUpdateListener updateListener = new AudioRecord.OnRecordPositionUpdateListener(){
        public void onPeriodicNotification(AudioRecord recorder){
            int result = aRecorder.read(buffer, 0, buffer.length);
        }

        public void onMarkerReached(AudioRecord recorder)
        {}
    };

この問題は次のものに関連していると思われます: - このe にaRecorder.setPositionNotificationPeriod(framePeriod);は期間が大きすぎる可能性があり、期間が短い (短い) と問題が解決します。bufferSiz

誰かがバッファオーバーフローを取り除く方法を教えてもらえますか?

4

2 に答える 2