Skip to content

Commit e6aab5a

Browse files
criticalAYdavid-allison
authored andcommitted
refactor: remove duplicate audio recorder class
- update Audio recorder usage in Audio controller and reviewer
1 parent 725debf commit e6aab5a

7 files changed

Lines changed: 22 additions & 372 deletions

File tree

AnkiDroid/src/main/java/com/ichi2/anki/multimedia/audio/AudioRecordingController.kt

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ import com.ichi2.anki.multimedia.AudioVideoFragment
4343
import com.ichi2.anki.multimedia.MultimediaViewModel
4444
import com.ichi2.anki.multimedia.audio.AudioRecordingController.RecordingState.AppendToRecording
4545
import com.ichi2.anki.multimedia.audio.AudioRecordingController.RecordingState.ImmediatePlayback
46-
import com.ichi2.anki.multimediacard.AudioRecorder
4746
import com.ichi2.anki.multimediacard.IMultimediaEditableNote
47+
import com.ichi2.anki.recorder.AudioRecorder
4848
import com.ichi2.anki.showThemedToast
4949
import com.ichi2.anki.snackbar.showSnackbar
5050
import com.ichi2.anki.ui.OnHoldListener
@@ -124,7 +124,7 @@ class AudioRecordingController(
124124
@LayoutRes controllerLayout: Int,
125125
) {
126126
this.state = initialState
127-
audioRecorder = AudioRecorder()
127+
audioRecorder = AudioRecorder(context)
128128
if (inEditField) {
129129
val origAudioPath = viewModel?.currentMultimediaPath?.value
130130
var bExist = false
@@ -526,13 +526,13 @@ class AudioRecordingController(
526526
when {
527527
isRecordingPaused -> resumeRecording()
528528
isRecording -> pauseRecorder()
529-
isCleared -> startRecording(context, tempAudioPath!!)
530-
else -> startRecording(context, tempAudioPath!!)
529+
isCleared -> startRecording(tempAudioPath!!)
530+
else -> startRecording(tempAudioPath!!)
531531
}
532532
}
533533
is ImmediatePlayback -> {
534534
when (state as ImmediatePlayback) {
535-
ImmediatePlayback.CLEARED -> startRecording(context, tempAudioPath!!)
535+
ImmediatePlayback.CLEARED -> startRecording(tempAudioPath!!)
536536
// end recording, allow a user to play or clear
537537
ImmediatePlayback.RECORDING_IN_PROGRESS -> toggleSave(vibrate = false)
538538
// stop -> playing
@@ -605,13 +605,10 @@ class AudioRecordingController(
605605
}
606606
}
607607

608-
private fun startRecording(
609-
context: Context,
610-
audioPath: File,
611-
) {
608+
private fun startRecording(audioPath: File) {
612609
Timber.i("starting recording")
613610
try {
614-
audioRecorder.startRecording(context, audioPath)
611+
audioRecorder.start(audioPath)
615612
isRecording = true
616613
audioTimer.start()
617614
setUiState(state.recording())
@@ -630,7 +627,7 @@ class AudioRecordingController(
630627
fun stopAndSaveRecording() {
631628
audioTimer.stop()
632629
try {
633-
audioRecorder.stopRecording()
630+
audioRecorder.stop()
634631
} catch (e: RuntimeException) {
635632
Timber.i(e, "Recording stop failed, this happens if stop was hit immediately after start")
636633
showThemedToast(context, context.resources.getString(R.string.multimedia_editor_audio_view_recording_failed), true)
@@ -662,19 +659,19 @@ class AudioRecordingController(
662659
vibrate(20.milliseconds)
663660
audioTimer.stop()
664661
setUiState(state.clear())
665-
audioRecorder.stopRecording()
662+
audioRecorder.stop()
666663
viewModel?.updateCurrentMultimediaPath(null)
667664
tempAudioPath = generateTempAudioFile(context).also { tempAudioPath = it }
668665
isRecording = false
669666
}
670667

671668
fun onFocusLost() {
672-
audioRecorder.release()
669+
audioRecorder.stop()
673670
audioPlayer!!.release()
674671
}
675672

676673
fun onDestroy() {
677-
audioRecorder.release()
674+
audioRecorder.close()
678675
}
679676

680677
// when answer button is clicked in reviewer
@@ -716,7 +713,7 @@ class AudioRecordingController(
716713
override fun onAudioTick() {
717714
try {
718715
if (isRecording) {
719-
val maxAmplitude = audioRecorder.maxAmplitude() / 10
716+
val maxAmplitude = audioRecorder.getMaxAmplitude() / 10
720717
audioWaveform.addAmplitude(maxAmplitude.toFloat())
721718
}
722719
} catch (e: IllegalStateException) {

AnkiDroid/src/main/java/com/ichi2/anki/multimediacard/AudioRecorder.kt

Lines changed: 0 additions & 131 deletions
This file was deleted.

AnkiDroid/src/main/java/com/ichi2/anki/ui/windows/reviewer/audiorecord/AudioRecorder.kt

Lines changed: 0 additions & 97 deletions
This file was deleted.

AnkiDroid/src/main/java/com/ichi2/anki/ui/windows/reviewer/audiorecord/CheckPronunciationViewModel.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import androidx.lifecycle.ViewModel
1919
import androidx.lifecycle.viewModelScope
2020
import com.ichi2.anki.AnkiDroidApp
2121
import com.ichi2.anki.R
22+
import com.ichi2.anki.recorder.AudioRecorder
2223
import kotlinx.coroutines.Job
2324
import kotlinx.coroutines.delay
2425
import kotlinx.coroutines.flow.MutableSharedFlow
@@ -52,12 +53,12 @@ class CheckPronunciationViewModel(
5253
private val isPlaying get() = audioPlayer.isPlaying
5354

5455
fun onRecordingStarted() {
55-
audioRecorder.startRecording()
56+
audioRecorder.start()
5657
onCancelPlayback()
5758
}
5859

5960
fun onRecordingCancelled() {
60-
audioRecorder.reset()
61+
audioRecorder.stop()
6162
}
6263

6364
fun onRecordingCompleted() {
@@ -99,8 +100,8 @@ class CheckPronunciationViewModel(
99100
}
100101

101102
private fun playCurrentFile() {
102-
val file = currentFile ?: return
103-
audioPlayer.play(file) {
103+
val filePath = currentFile?.absolutePath ?: return
104+
audioPlayer.play(filePath) {
104105
viewModelScope.launch {
105106
playbackProgressBarMaxFlow.emit(audioPlayer.duration)
106107
launchProgressBarUpdateJob()

0 commit comments

Comments
 (0)