
android可以设定audiotrack的flag吗
展开全部
你打印下Min_size看下是多少? 这是我以前写的能用。 packagegame.net.Speech; importjava.io.IOException; importjava.io.InputStream; importjava.net.Socket; importandroid.media.AudioFormat; importandroid.media.AudioManager; importandroid.media.AudioTrack; importandroid.util.Log; publicclassAudioTypePlayextendsThreadimplementsIPlay{ @Override publicvoidplay(){ //TODOAuto-generatedmethodstub this.start(); } @Override publicvoidend(){ //TODOAuto-generatedmethodstub m_keep_running=false; try{ Thread.sleep(200); }catch(Exceptione){ } } privateInputStreammis; protectedAudioTrackm_out_trk; protectedintm_out_buf_size; protectedbyte[]m_out_bytes; publicbooleanm_keep_running=true; /** *初始化设备信息 *@throwsIOException */ publicAudioTypePlay(InputStreamis)throwsIOException{ m_keep_running=true; m_out_buf_size=AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); m_out_trk=newAudioTrack(AudioManager.STREAM_MUSIC,8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, m_out_buf_size, AudioTrack.MODE_STREAM); m_out_bytes=newbyte[m_out_buf_size*3]; //newThread(R1).start(); mis=is; } publicvoidrun(){ m_out_trk.play(); while(m_keep_running){ try{ m_out_buf_size=mis.read(m_out_bytes); Log.d("播放声音",String.valueOf(m_out_buf_size)); m_out_trk.write(m_out_bytes.clone(),0,m_out_buf_size); }catch(Exceptione){ e.printStackTrace(); } } m_out_trk.stop(); m_out_trk.release(); m_out_trk=null; if(endEvent!=null) { endEvent.EndEvent(); } } privateOnSpeechEndEventendEvent; @Override publicvoidsetEndEvent(OnSpeechEndEventevent){ //TODOAuto-generatedmethodstub endEvent=event; } }
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询