Я попытался использовать AudioTrack.write() для прослушивания записанного звука, но без вывода, поэтому мне нужно записать аудио через AudioRecord и воспроизвести его с помощью AudioTrack без сохраните его на SD-карте или внутреннем хранилище, поэтому любая помощь будет оценена.Воспроизведение записанного звука с помощью AudioRecord.write()
public class MainActivity extends Activity {
short[]buffer=new short[512];
AudioManager am = null;
AudioRecord record =null;
AudioTrack track =null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setVolumeControlStream(AudioManager.MODE_IN_COMMUNICATION);
init();
final Button jjbt1=(Button)findViewById(R.id.jt1);
final Button jjbt2=(Button)findViewById(R.id.jt2);
am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.MODE_IN_COMMUNICATION);
record.startRecording();
track.play();
jjbt1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
for(int i=0 ; i<512 ; i++){
record.read(buffer, 0,512);
}
record.stop();
}
});
jjbt2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
try{
track.write(buffer, 0,buffer.length);
}catch(Exception de){Toast.makeText(getBaseContext(), de.getMessage().toString(), Toast.LENGTH_LONG).show();}
}
});
}
private void init() {
int min = AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
record = new AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, 8000, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT, min);
int maxJitter = AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
track = new AudioTrack(AudioManager.MODE_IN_COMMUNICATION, 8000, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, maxJitter, AudioTrack.MODE_STREAM);
}
}
Я очень ценю ваши усилия, но мне не нужны записи и треки для работы синхронно, моя проблема в отдельном их, я имею в виду запись звука и передачу записанных звуковых данных в буферный массив (lin в вашем случае) и, наконец, играйте их в соответствии с моим действием (например, нажмите btn). Спасибо –
что-то важное для вас, чтобы знать, что основная идея моего приложения. заключается в вставке записанного звука в базу данных через zend framework. Мне очень жаль, потому что мои вопросы не организованы. Благодарю вас. –