Ich verwende AudioTrack
Klasse einen Strom von rohen Tondaten zu spielen:Android Audiotrack Schreibblocks für die gesamte Dauer der Wiedergabe
AudioTrack audioTrack;
int sampleRate = 11025;
int channelConfigIn = AudioFormat.CHANNEL_IN_MONO;
int channelConfigOut = AudioFormat.CHANNEL_OUT_STEREO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
.....
int bufferSize = AudioTrack.getMinBufferSize(sampleRate,channelConfigOut,audioFormat);
audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,sampleRate,channelConfigOut,audioFormat,bufferSize,AudioTrack.MODE_STREAM);
audioTrack.play();
Dann auf einem separaten Thread:
while(true)
{
short [] buffer = new short[14500];
//fill buffer with sound data
long time = System.currentTimeMillis();
audioTrack.write(buffer,0,14500);
Log.i("time",(System.currentTimeMillis() - time) + "");
}
Mein Problem ist, dass das Protokoll zeigt immer, dass die write
Methode für etwa 0,6 Sekunden blockiert, das ist die gleiche wie die wiedergegebene Klanglänge (14500 Samples), außerdem reagiert das Telefon während der Wiedergabe nicht, der Haupttritt kann fast nichts tun, jemand kann helfen ...
[dies] (http://pastebin.com/tz2Mvh5G) funktioniert einfach ok – pskink