audioTrack play()只播放一次

Add*_*ddi 4 android

第一次使用Android的AudioTrack.我创建了一个类AndroidAudioDevice.我用这个构造函数初始化它:

 public AndroidAudioDevice( ){  // constructor
           Log.i("Audio", "constructor");
           int minSize =AudioTrack.getMinBufferSize( SAMPLE_RATE, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT );        
           track = new AudioTrack( AudioManager.STREAM_MUSIC, SAMPLE_RATE, 
                                                AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 
                                                minSize, AudioTrack.MODE_STATIC);

           createSample();
           track.write( buffer, 0, buffer.length );
       };
Run Code Online (Sandbox Code Playgroud)

(SAMPLE_RATE设置为44100).

我的主要活动只是有一个按钮,可以调用

public void playSound(){
           track.play();
           Log.i("Audio", "playState: " + track.getPlayState());
       };

this works find BUT ONLY ONCE! If I press the button again no sound anymore. 
Run Code Online (Sandbox Code Playgroud)

BTW:Log.i为播放状态显示"3"

知道为什么这只能工作一次吗?提前致谢

Fem*_*emi 7

状态3是PLAYSTATE_PLAYING.我会尝试在第二次调用之前调用stop()reloadStaticDataplay.

  • 嗯,有趣的是我必须在第二次调用play()之前调用stop()和reloadStaticData().这样做有效.我仍然想知道为什么我要再次重新加载StaticData?无论如何 - 谢谢Femi! (2认同)