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

Как андроид может измерять уровень шума? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Не запускаеться эмулятор в androi studio http://www.cyberforum.ru/android-dev/thread1434033.html
Запускаю приложение hello word, ничего в коде не меняла. Запускаю, появляеться эмулятор, 15 минут и больше, кроме надписи android ничего не происходит. в чем проблема? эмулятор как-то не так настроен?
Программирование Android По поводу EditText разблокировка Здравствуйте, не могу понять, блокирую editText следующим образом editText6.setFocusable(false); editText6.setLongClickable(false); editText6.setCursorVisible(false); после разблокирую поле... http://www.cyberforum.ru/android-dev/thread1434029.html
Программирование Android Что использовать во фрагментах вместо getIntent() ?
Всем привет! Пытаюсь из одной активности во фрагмент передать данные. Метод getIntent().getExtras() не работает, подчеркнут красным. С помощью чего можно решить проблему?
Программирование Android TCP клиент в NDK
Как реализовать TCP клиент используя андроид ndk на С++?? Я слышал, что у андроид такое же ядро как и у Linux. То есть на андроид ndk будет такой же TCP клиент как и в Linux верно??
Программирование Android R.java не генерируется Eclipse http://www.cyberforum.ru/android-dev/thread1433656.html
После Project-> Clean перестал генерироваться R.java подскажите пожалуйста решение
Программирование Android Раскрывающийся и сворачивающийся toolbar Всем привет. Задача сделать как здесь: http://1.bp.blogspot.com/-n1_hHrKdUFo/VLyVCHXxJsI/AAAAAAAAAF0/U0KEnRDCx7I/s1600/animColor2.gif Решение нашел здесь... подробнее

Показать сообщение отдельно
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
30.04.2015, 16:37
Поделюсь своим аудиорекордером
Кликните здесь для просмотра всего текста
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
public class AudioRecordManager {
 
    public interface OnAudioRecordCallback {
        void onComplete(String path);
        void onFailed(int code);
    }
 
    public interface OnAudioRecordListener {
        void changeAmplitude(double value);
    }
    
    public void setOnAudioRecordCallback(OnAudioRecordCallback onAudioRecordCallback) {
        this.onAudioRecordCallback = onAudioRecordCallback;
    }
 
    public void setOnAudioRecordListener(OnAudioRecordListener onAudioRecordListener) {
        this.onAudioRecordListener = onAudioRecordListener;
    }
    
    private OnAudioRecordListener onAudioRecordListener;
 
    private OnAudioRecordCallback onAudioRecordCallback;
 
    private MediaRecorder myRecorder;
    private String outputFile = null;
 
    public AudioRecordManager() {
        handler = new Handler();
        audioRecordThread = new AudioRecordThread();
    }
 
    private Handler handler;
 
    private Runnable runnable;
 
    private AudioRecordThread audioRecordThread;
 
    public void startRecord() {
        if(audioRecordThread == null || !audioRecordThread.isRunning()){
            new Thread(audioRecordThread).start();
        }
    }
 
    public void stopRecord() {
        if(audioRecordThread!=null && audioRecordThread.isRunning()) {
            audioRecordThread.stopRecording();
        }
    }
 
    public double getAmplitude() {
        if (myRecorder != null)
            return (myRecorder.getMaxAmplitude());
        else
            return 0;
    }
 
    class AudioRecordThread implements Runnable {
 
        private boolean isRunning;
 
        private boolean isStop;
 
        private long startTime;
 
        private void startRecord() {
 
            isRunning = true;
            isStop = false;
            File folder = new File(Content.AUDIO_DIR);
            if (!folder.exists()) {
                boolean b = folder.mkdirs();
            }
            startTime = System.currentTimeMillis();
            outputFile = folder.getPath() + "/rec_" + startTime + ".mp3";
 
            myRecorder = new MediaRecorder();
 
            myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            myRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
            myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
            myRecorder.setOutputFile(outputFile);
            try {
                myRecorder.prepare();
                myRecorder.start();
 
                startTime = System.currentTimeMillis();
 
            } catch (Exception e) {
                e.printStackTrace();
            }
 
            runnable = new Runnable() {
                @Override
                public void run() {
                    if (onAudioRecordListener != null) {
                        onAudioRecordListener.changeAmplitude(getAmplitude());
                    }
                    handler.postDelayed(this, 100);
                }
            };
 
            handler.post(runnable);
        }
 
        private void stopRecord() {
            final long stopTime = System.currentTimeMillis();
            handler.removeCallbacks(runnable);
 
            try {
                if(System.currentTimeMillis() - startTime < 500){
                    try{
                        Thread.sleep(500);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
                myRecorder.stop();
                myRecorder.release();
                myRecorder = null;
            } catch (Exception e) {
                myRecorder = null;
                e.printStackTrace();
            }
 
            if (stopTime - startTime > 1000) {
                if (onAudioRecordCallback != null) {
                    onAudioRecordCallback.onComplete(outputFile);
                }
            } else {
                File current = new File(outputFile);
                current.delete();
                if (onAudioRecordCallback != null) {
                    onAudioRecordCallback.onFailed(2);
                }
            }
 
            isRunning = false;
        }
 
        @Override
        public void run() {
            startRecord();
            while (!isStop) {
                try {
                    Thread.sleep(30);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            stopRecord();
        }
 
        public void stopRecording() {
            isStop = true;
        }
 
        public boolean isRunning() {
            return isRunning;
        }
    }
 
}


Можно засетить ему 2 листенера, один будет уведомлять о результате записи аудио, другой во время записи будет непрерывно слать амплитуду (уровень шума).
Лежит на продакшене, вылетов не было.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru