Skip to content

Commit 6343a50

Browse files
authored
fix:Failed to stop recording #163 (#167)
* fix:Failed to stop recording #163 * fix:invoke stopRecord method return previous path
1 parent c7e8d06 commit 6343a50

File tree

6 files changed

+12
-23
lines changed

6 files changed

+12
-23
lines changed

android/src/main/kotlin/com/simform/audio_waveforms/AudioRecorder.kt

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ private const val RECORD_AUDIO_REQUEST_CODE = 1001
2222
class AudioRecorder : PluginRegistry.RequestPermissionsResultListener {
2323
private var permissions = arrayOf(Manifest.permission.RECORD_AUDIO)
2424
private var useLegacyNormalization = false
25-
private var mediaMetadataRetriever = MediaMetadataRetriever()
26-
private var audioInfoArrayList = ArrayList<String>()
2725

2826
fun getDecibel(result: MethodChannel.Result, recorder: MediaRecorder?) {
2927
if (useLegacyNormalization) {
@@ -72,6 +70,7 @@ class AudioRecorder : PluginRegistry.RequestPermissionsResultListener {
7270
reset()
7371
release()
7472
}
73+
val audioInfoArrayList = ArrayList<String>()
7574
val duration = getDuration(path)
7675
audioInfoArrayList.add(path)
7776
audioInfoArrayList.add(duration)
@@ -82,13 +81,17 @@ class AudioRecorder : PluginRegistry.RequestPermissionsResultListener {
8281
}
8382

8483
private fun getDuration(path: String): String {
85-
mediaMetadataRetriever.setDataSource(path)
86-
val duration = mediaMetadataRetriever.extractMetadata(METADATA_KEY_DURATION)
87-
return duration ?: "-1"
88-
}
89-
90-
fun releaseMetaDataRetriever(){
91-
mediaMetadataRetriever.release()
84+
val mediaMetadataRetriever = MediaMetadataRetriever()
85+
try {
86+
mediaMetadataRetriever.setDataSource(path)
87+
val duration = mediaMetadataRetriever.extractMetadata(METADATA_KEY_DURATION)
88+
return duration ?: "-1"
89+
} catch (e: Exception) {
90+
Log.e(LOG_TAG, "Failed to get recording duration")
91+
} finally {
92+
mediaMetadataRetriever.release()
93+
}
94+
return "-1"
9295
}
9396

9497
fun startRecorder(result: MethodChannel.Result, recorder: MediaRecorder?, useLegacy: Boolean) {

android/src/main/kotlin/com/simform/audio_waveforms/AudioWaveformsPlugin.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ class AudioWaveformsPlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
6363
audioRecorder.stopRecording(result, recorder, path!!)
6464
recorder = null
6565
}
66-
Constants.releaseMetaDataRetriever -> audioRecorder.releaseMetaDataRetriever()
6766
Constants.pauseRecording -> audioRecorder.pauseRecording(result, recorder)
6867
Constants.resumeRecording -> audioRecorder.resumeRecording(result, recorder)
6968
Constants.getDecibel -> audioRecorder.getDecibel(result, recorder)

android/src/main/kotlin/com/simform/audio_waveforms/Utils.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ object Constants {
6262
const val onCurrentExtractedWaveformData = "onCurrentExtractedWaveformData"
6363
const val waveformData = "waveformData"
6464
const val useLegacyNormalization = "useLegacyNormalization"
65-
const val releaseMetaDataRetriever = "releaseMetaDataRetriever"
6665
}
6766

6867
enum class FinishMode(val value:Int) {

lib/src/base/audio_waveforms_interface.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,6 @@ class AudioWaveformsInterface {
9090
return hasPermission ?? false;
9191
}
9292

93-
Future<void> releaseMetaDataRetriever() async {
94-
await _methodChannel.invokeMethod(Constants.releaseMetaDataRetriever);
95-
}
96-
9793
///platform call to prepare player
9894
Future<bool> preparePlayer(String path, String key, [double? volume]) async {
9995
var result = await _methodChannel.invokeMethod(Constants.preparePlayer, {

lib/src/base/constants.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,4 @@ class Constants {
4343
static const String onCurrentExtractedWaveformData =
4444
"onCurrentExtractedWaveformData";
4545
static const String useLegacyNormalization = "useLegacyNormalization";
46-
static const String releaseMetaDataRetriever = "releaseMetaDataRetriever";
4746
}

lib/src/controllers/recorder_controller.dart

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -410,18 +410,11 @@ class RecorderController extends ChangeNotifier {
410410
_recorderState = state;
411411
}
412412

413-
/// This function is to release resources taken by android native
414-
/// MetaDataRetriever.
415-
void _release() {
416-
AudioWaveformsInterface.instance.releaseMetaDataRetriever();
417-
}
418-
419413
/// Releases any resources taken by this recorder and with this
420414
/// controller is also disposed.
421415
@override
422416
void dispose() async {
423417
if (recorderState != RecorderState.stopped) await stop();
424-
if (Platform.isAndroid) _release();
425418
_currentScrolledDuration.dispose();
426419
_currentDurationController.close();
427420
_recorderStateController.close();

0 commit comments

Comments
 (0)