大家好,我使用AudioTrack类播放纯PCM数据,调用play()方法的时候,抛出了异常:play() called on uninitialized AudioTrack。
向大家请教解决办法。代码如下:public void run() {
        m_out_buf_size = AudioTrack.getMinBufferSize(44100,
                AudioFormat.CHANNEL_CONFIGURATION_MONO, //CHANNEL_CONFIGURATION_STEREO, CHANNEL_CONFIGURATION_MONO,
                AudioFormat.ENCODING_PCM_16BIT); m_out_trk = new AudioTrack(AudioManager.STREAM_MUSIC, 44100,
       AudioFormat.CHANNEL_CONFIGURATION_STEREO, // CHANNEL_CONFIGURATION_MONO,
        AudioFormat.ENCODING_PCM_16BIT,
                 m_out_buf_size,
                 AudioTrack.MODE_STREAM); m_out_bytes = new byte[m_out_buf_size];
byte[] bytes_pkg = null;
m_out_trk.play();
while (m_keep_running) {
try {
in.read(m_out_bytes);
bytes_pkg = m_out_bytes.clone();
m_out_trk.write(bytes_pkg, 0, bytes_pkg.length);
} catch (Exception e) {
e.printStackTrace();
}
}
m_out_trk.stop();
m_out_trk = null;
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}

解决方案 »

  1.   

    因该是什么类没有uninitialized,和你仔细查查
      

  2.   

    这个我知道,但是如何让它进入初始化initialized状态呢?
      

  3.   

    能把in.read(m_out_bytes)的原函数给出来吗?
      

  4.   

         //注意要设置正确的minBufferSize,否则会无法正常初始化,并且play()时会报错
         int minBufferSize=AudioTrack.getMinBufferSize(sampleRateInHz,channelConfig,audioFormat);
      

  5.   

    在AndroidManifest.xml中添加权限<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>