@OnClick(R.id.mBtnStart) public void start() { if (mIsRecording) { stopRecord(); mBtnStart.setText("Start"); mIsRecording = false; } else { boolean isPermissionsGranted = getRxPermissions().isGranted(WRITE_EXTERNAL_STORAGE) && getRxPermissions().isGranted(RECORD_AUDIO); if (!isPermissionsGranted) { getRxPermissions() .request(WRITE_EXTERNAL_STORAGE, RECORD_AUDIO) .subscribe(granted -> { // not record first time to request permission if (granted) { Toast.makeText(getApplicationContext(), "Permission granted", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "Permission not granted", Toast.LENGTH_SHORT).show(); } }, Throwable::printStackTrace); } else { startRecord(); mBtnStart.setText("Stop"); mIsRecording = true; } } }
@Override public void onError() { mBtnStart.post(() -> { Toast.makeText(getApplicationContext(), "Record fail", Toast.LENGTH_SHORT).show(); mBtnStart.setText("Start"); mIsRecording = false; }); } });
@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]; }