Android AudioTrack发出短嘟嘟声或cherp声,如何使声音变长?

Android AudioTrack发出短嘟嘟声或cherp声,如何使声音变长?,android,Android,睡眠(10000)将啁啾从半秒增加到一两秒。 Thread.sleep(40000)的啁啾声与Thread.sleep(10000)的啁啾声一样长 有m_或无m_或AudioTrack.setTereOVolume(AudioTrack.getMaxVolume(),AudioTrack.getMaxVolume())时的音量都一样大 m_iSampleRate=6000;与m_iSampleRate=48000具有相同的效果; 与m_iSampleRate=4000略有差异 将m_aGener

睡眠(10000)将啁啾从半秒增加到一两秒。 Thread.sleep(40000)的啁啾声与Thread.sleep(10000)的啁啾声一样长

有m_或无m_或AudioTrack.setTereOVolume(AudioTrack.getMaxVolume(),AudioTrack.getMaxVolume())时的音量都一样大

m_iSampleRate=6000;与m_iSampleRate=48000具有相同的效果; 与m_iSampleRate=4000略有差异

将m_aGeneratedSnd增加到内存不足错误之前的某一点,不会增加声音的长度

第一个问题:如何增加声音的长度? 第二个问题:如何增加销量


提前感谢您的帮助。

在调用play()之后,您需要继续调用AudioTrack对象上的write()。这将在缓冲区清空时将数据流传输到缓冲区中。play()后的write()将提高性能。而((m_atAudioTrack.getPlayState())==AudioTrack.PLAYSTATE_PLAYING)是无限的。write()的三个循环将同一数组重复2或3次,有时会在明显完成第三次之前剪切数组。
private void PlaySound()
 {
    if (m_atAudioTrack != null) m_atAudioTrack.release();

    m_atAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
         m_iSampleRate, AudioFormat.CHANNEL_OUT_MONO,
         AudioFormat.ENCODING_PCM_16BIT, m_aGeneratedSnd.length,
         AudioTrack.MODE_STREAM);

    m_atAudioTrack.write(m_aGeneratedSnd, 0, m_aGeneratedSnd.length);

    m_atAudioTrack.setStereoVolume( AudioTrack.getMaxVolume(), 
            AudioTrack.getMaxVolume());

    m_atAudioTrack.play();
    try
    {
        Thread.sleep(10000);
    } 
    catch (Exception e)
    {
        e.printStackTrace();
    }

    // Track play done. Release track.
    if (m_atAudioTrack != null) m_atAudioTrack.release();
 }