Mam obecnie dźwięk PCM w postaci tablicy bajtów. Format jest podpisany 16 bit little endian. Chciałbym przekonwertować to na format obsługiwany w systemie Android, najlepiej w wersji 3.2 lub wyższej. Czy ktoś ma sugestie, jak to zrobić? Zrobiłem kilka badań i próbowałem poniższych kroków, ale żadna nie odniosła sukcesu. Byłoby bardzo cenne, gdyby ktokolwiek mógł zaproponować lepszy sposób lub wskazać, gdzie popełniłem błąd.PCM Raw Bytes [] To Audio na Androidzie
Próbowałem już utworzyć AudioFormat z poprawnymi ustawieniami audio, jednak Android nie obsługuje biblioteki javax.sound.sampled.
Próbowałem również zapisywać dane PCM do pliku wave, ale mam problem z uzyskaniem wszystkich niezbędnych informacji w nagłówku wav.
Próbowałem również użyć klasy AudioTrack oferowanej przez Androida do odtwarzania danych PCM. Jednak wydaje mi się, że nie słyszę ż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.
zaktualizowałeś moją odpowiedź –