PCM Raw Bytes [] To Audio na Androida
Obecnie mam dźwięk PCM w postaci tablicy bajtów. Format jest podpisany 16-bitowym małym endianem. Chciałbym przekonwertować to na jakiś możliwy do odtworzenia format na Androida, najlepiej w wersji 3.2 lub wyższej. Czy ktoś ma sugestie, jak można to zrobić? Zrobiłem kilka badań i wypróbowałem poniższe, ale żaden z nich nie powiódł się. Byłoby bardzo mile widziane, gdyby ktoś mógł zasugerować lepszy sposób lub wskazać, gdzie poszedłem źle.
Próbowałem utworzyć format AudioFormat z poprawnymi ustawieniami audio, jednak Android nie obsługuje biblioteki javax.sound.sampled.
Próbowałem także zapisać dane PCM w pliku wave, ale napotykam problemy z uzyskaniem wszystkich niezbędnych informacji nagłówka wav.
Próbowałem również użyć klasy AudioTrack oferowanej przez Androida do odtwarzania danych PCM. Nie słyszę jednak żadnego dźwięku. Oto moja metoda:
public void playback(){
try{
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 500000, AudioTrack.MODE_STATIC);
audioTrack.write(audio, 0, 500000);
} catch(Throwable t){
Log.d("Audio","Playback Failed");
}
}
Wszelkie sugestie będą mile widziane.