public synchronized boolean start(@NonNull AudioDataCallback audioDataCallback) { return start(DEFAULT_SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, DEFAULT_BUFFER_SIZE, audioDataCallback); }
private void stopRecord() { mStreamAudioRecorder.stop(); try { mFileOutputStream.close(); mFileOutputStream = null; } catch (IOException e) { e.printStackTrace(); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_stream); ButterKnife.bind(this); mRatioBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { mRatio = (float) progress / 100; mRatioValue.setText(String.valueOf(mRatio)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); mStreamAudioRecorder = StreamAudioRecorder.getInstance(); mStreamAudioPlayer = StreamAudioPlayer.getInstance(); mAudioProcessor = new AudioProcessor(BUFFER_SIZE); mBuffer = new byte[BUFFER_SIZE]; }
/** * AudioFormat.CHANNEL_IN_MONO * AudioFormat.ENCODING_PCM_16BIT */ public synchronized boolean start(int sampleRate, int channelConfig, int audioFormat, int bufferSize, @NonNull AudioDataCallback audioDataCallback) { stop(); mExecutorService = Executors.newSingleThreadExecutor(); if (mIsRecording.compareAndSet(false, true)) { mExecutorService.execute( new AudioRecordRunnable(sampleRate, channelConfig, audioFormat, bufferSize, audioDataCallback)); return true; } return false; }
mOutputFile.createNewFile(); mFileOutputStream = new FileOutputStream(mOutputFile); mStreamAudioRecorder.start(new StreamAudioRecorder.AudioDataCallback() { @Override public void onAudioData(byte[] data, int size) {