Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
WhiteMeanWhite
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 33
#1

Как записать аудио с микрофона и воспроизвести? - Программирование Android

25.04.2013, 16:44. Просмотров 2356. Ответов 2
Метки нет (Все метки)

Я хочу записывать с микрофона запись в буфер с помощью AudioRecorder и воспроизвести с помощью AudioTrack, но ничего не воспроизводится. В чем ошибка?
Код MainActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
public class MainActivity extends Activity {
    
    private Audio aud;
    EditText texxt;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        texxt = (EditText) findViewById(R.id.editText1);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    public void click(View v) {
         aud = new Audio();
         aud.run();
    }
    
    public void stop(View v) {
    }
    
    private class Audio extends Thread
    { 
        private boolean stopped = false;
 
        /**
         * Give the thread high priority so that it's not canceled unexpectedly, and start it
         */
        private Audio()
        { 
            android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
            start();
        }
 
        @Override
        public void run()
        { 
            Log.i("Audio", "Running Audio Thread");
            AudioRecord recorder = null;
            AudioTrack track = null;
            short[][]   buffers  = new short[256][160];
            int ix = 0;
 
            /*
             * Initialize buffer to hold continuously recorded audio data, start recording, and start
             * playback.
             */
            try
            {
                int N = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT);
                recorder = new AudioRecord(AudioSource.MIC, 8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, N*10);
                track = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, 
                        AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, N*10, AudioTrack.MODE_STREAM);
                recorder.startRecording();
                short[] buff = new short[256];
                recorder.read(buff, 0, N);
                track.write(buff, 0, buff.length);
                track.play();
                texxt.setText("");
                for (int i=0; i<buff.length; i++){
                    texxt.setText(texxt.getText() + " " + buff.toString());
                }
                /*
                 * Loops until something outside of this thread stops it.
                 * Reads the data from the recorder and writes it to the audio track for playback.
                 */
                
            }
            catch(Throwable x)
            { 
                Log.w("Audio", "Error reading voice audio", x);
            }
            /*
             * Frees the thread's resources after the loop completes so that it can be run again
             */
            finally
            { 
                recorder.stop();
                recorder.release();
                track.stop();
                track.release();
            }
        }
 
        /**
         * Called from outside of the thread in order to stop the recording/playback loop
         */
        private void close()
        { 
             stopped = true;
        }
 
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2013, 16:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как записать аудио с микрофона и воспроизвести? (Программирование Android):

Воспроизвести аудио по интернет-ссылке - Программирование Android
Всем привет, хочу сднлать аудио плеер, только проигрывать он будет не локальные файлы, а например будет тянуть загруженную дожожку на...

Как записать потоковое аудио из интернета - Программирование Android
Есть приложение которое играет радио из адреса http://78.110.148.237:8000/;stream.nsv. Как можно реализовать запись аудио в формат mp3...

Как записать аудио поток в файл - Программирование Android
Добрый день!!! Подскажите как сохранить в файл аудио поток с микрофона? Делал как-то так (см. ниже код), что-то в файл записывается, а вот...

Записать массив байтов с микрофона - Программирование Android
Всем привет! Возникла проблема, никак не могу придумать такую штуку, допустим, имеется небольшое приложение, две кнопки: ...

Как можно воспроизвести видео - Программирование Android
Я хочу что бы мне воспроизводилось видео, а если на него нажмет пользователь то был бы сделан переход на другую активность, искал в Google,...

Как воспроизвести фоновый звой звук при разговоре по телефону? - Программирование Android
Например я беру трубку и мой собеседник слышит звук который я буду воспроизводить. Например я с ним разговариваю и у меня доносится звук...

2
WhiteMeanWhite
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 33
25.04.2013, 17:06  [ТС] #2
Как записать звук с микрофона в буфер и воспроизвести? И как записать его потом в файл с форматом flac?
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.04.2013, 19:04 #3
http://developer.android.com/guide/t...o-capture.html
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 19:04
Привет! Вот еще темы с ответами:

Как на java получить с микрофона звук во flac формате? - Программирование Android
Как на java получить с микрофона звук во flac формате?

Как отследить момент окончания аудио в SoundPool? - Программирование Android
Нужно отключить анимацию рта по окончании, соответственно, речи=)

MediaPlayer: как продолжить работу аудио-плеера в фоновом режиме? - Программирование Android
Как продолжить работу ауди плеера в фоновом режиме? Сервис создал, но что туда надо передать? Весь код выполняется в Activity.

Как получить стерео-звук с выхода аудио-микшера или музыкальный поток? - Программирование Android
Мне нужен поток стерео-звука с выхода аудио-микшера, то есть, what you hear на аудио-выходе, либо через BlueTooth колонки. Как его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru