Ho creato una semplice applicazione che genera un'onda quadra di frequenza specificata e la riproduce con AudioTrack in modalità STREAM (STREAM_MUSIC). Tutto sembra funzionare bene e il suono gioca bene, ma quando il flusso è finito ricevo messaggi nel registro:AudioTrack riavvio anche dopo l'interruzione
W/AudioTrack (7579): obtainBuffer() pista 0x14c228 disabili, riavviando ...
Anche dopo aver chiamato la funzione stop() continuo a riceverli. Credo di aver impostato correttamente la dimensione del buffer AudioTrack, in base alle dimensioni minime richieste da AudioTrack (nel mio caso 6x1024). Lo nutro con buffer più piccoli di 1024 cortometraggi.
Va bene che sto ricevendo questi e dovrei lasciarlo così?
Questo è il punto - riempire il buffer con i dati prima di chiamare il gioco. Quindi assicurati di poter generare i dati in tempo. Avrai latenza e dipende dal tuo telefono (dimensione del buffer minima), frequenza di campionamento e risoluzione dinamica che usi. Im my case (HTC Desire) 6kB. Si tratta di circa 3000 campioni mono a 16 bit. È possibile calcolare facilmente la latenza risultante prendendo in considerazione la frequenza di campionamento. Se usi l'API audio nativa puoi ottenere latenze molto più piccole, ma ancora lontane dai minuscoli 5ms di iPhone ... –