大家好,我使用AudioTrack类播放纯PCM数据,调用play()方法的时候,抛出了异常:play() called on uninitialized AudioTrack。
向大家请教解决办法。代码如下:
- C/C++ code
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(); }}
------解决方案--------------------
因该是什么类没有uninitialized,和你仔细查查