2009-09-17 13 views

Odpowiedz

18

Do nagrywania i monitorowania: Można użyć aktywności rejestratora dźwięku. Oto fragment kodu:

Intent recordIntent = new Intent(
       MediaStore.Audio.Media.RECORD_SOUND_ACTION); 
      startActivityForResult(recordIntent, REQUEST_CODE_RECORD); 

Za doskonały przykład roboczej jak nagrywać dźwięk, który obejmuje monitorowanie wejściowych, pobierz open source projektu Ringdroid: https://github.com/google/ringdroid

zobacz zrzuty ekranu i będziesz zobacz monitor.

Aby uzyskać wyższą jakość dźwięku, potrzebujesz lepszego mikrofonu. Wbudowany mikrofon może przechwytywać tylko tyle (co nie jest dobre). Ponownie, spójrz na projekt pierścienia, zbieraj informacje z tego miejsca. W tym momencie możesz zaimplementować pewne procedury normalizacji i wzmacniania, aby poprawić dźwięk.

+0

co to jest REQUEST_CODE_RECORD? –

+0

Stała lokalna, której używam do określenia, który wynik otrzymuję, z którego żądania na onActivityResult(). –

30

W tej chwili poważnym powodem słabej jakości dźwięku w systemie Android jest kodek używany przez klasę MediaRecorder (kodek AMR-NB). Można jednak uzyskać dostęp do nieskompresowanego dźwięku za pośrednictwem klasy AudioRecord i bezpośrednio zarejestrować to w pliku.

Wykonuje to w celu zapisania nieskompresowanego dźwięku do pliku WAV - spójrz na kod źródłowy klasy RehearsalAudioRecord.

Klasa RehearsalAudioRecord udostępnia również metodę getMaxAmplitude, za pomocą której można wykryć maksymalny poziom dźwięku od czasu ostatniego wywołania metody (MediaRecorder udostępnia tę metodę).

+0

Witam, Stjepan Rajko, w aplikacji Rehearsal Assistant, nie mogę znaleźć, org.urbanstew.VolumeEnvelopeView, czy możesz mi powiedzieć gdzie to jest? – pengwang

+0

Inne kodeki są również dostępne w systemie Android, a co z nimi http://developer.android.com/reference/android/media/MediaRecorder.AudioEncoder.html#DEFAULT –

Powiązane problemy