일시정지/기록 복원을 지원하는 안드로이드 버전에 일시정지/기록 복원 추가

3584 단어 react-native-audio

묘사

질문react-native-audio 현재 녹화를 일시 중지/재개하지 않습니다.이는 Android MediaRecording API급 23(솜사탕)이 일시 정지를 지원하지 않기 때문이다.그러나 24레벨 이상의 API(우간 압연)에는 API 일시 정지와 복구가 확실히 포함된다.만약 react-native-audio API 레벨이 24 이상인 안드로이드 버전에서 사용한다면, 녹음을 일시 정지하고 복구할 수 있을 것이다.
제안된 솔루션
이 정책은 런타임에 사용 가능한 API가 기록 일시 중지/재개를 지원하는지 확인합니다.만약 그렇다면 자바 반사 검사 MediaRecorder 클래스를 사용하여 자바 반사 검사 pause 방법과 resume 방법의 인용을 가져오고 사용하십시오.사용 가능한 API가 일시 중지를 지원하지 않으면 녹화 중지로 돌아갑니다.
이 솔루션에서는 필요한 최소 Android 버전을 변경할 필요가 없습니다.정지 시간을 정확하게 지원하기 위해 기록 시간을 측정하는 메커니즘도 업데이트했다.
나는 예상대로 일을 할 수 있도록 기본적인 테스트를 해 왔다.의견을 달아 주십시오.

토론 #1

안녕하세요, @jsierles. 이 요청을 보고 통합할 수 있는 사람이 있습니까?

토론 #2

그럼요. 괜찮아 보이면 한번 보고 합병할게요.감사합니다!

토론 #셋

이 예시를 실행할 때 일시 정지되지만 복구하면 오류가 발생Please call startRecording before stopping recording합니다.

토론 #4

@jsierles 이 오류를 재현할 수 없습니다.너는 나에게 더 많은 세부 사항을 알려줄 수 있니?

토론 #5

@jsierles iOS에서 정지하는 것이 작동하지 않는다는 것을 알았습니다.왜 그런지 모르겠지만 코드를 보고 나는 그것이 뜻밖에도 효과를 보았다는 것에 놀랐다.
AVAudioRecorder의 문서에 따르면 정지된 녹음을 복원하려면 반드시 호출해야 한다record(). 그러나 코드에는 이 기능이 전혀 사용되지 않았다.다음 diff가 이 문제를 해결한 것 같지만, 이pull 요청의 일부가 될지 모르겠습니다.
diff --git a/ios/AudioRecorderManager.m b/ios/AudioRecorderManager.m
index 9cf6303..39c6a39 100644
--- a/ios/AudioRecorderManager.m
+++ b/ios/AudioRecorderManager.m
@@ -212,9 +212,10 @@ RCT_EXPORT_METHOD(stopRecording)

 RCT_EXPORT_METHOD(pauseRecording)
 {
-  if (_audioRecorder.recording) {
-    [self stopProgressTimer];
-    [_audioRecorder pause];
+  if (_audioRecorder.isRecording) {
+      [_audioRecorder pause];
+  } else {
+      [_audioRecorder record];
   }
 }
무슨 생각 있어요?

토론 #6

이 점을 지적해 주셔서 감사합니다.나는 이곳의 상황이 결코 이상적이지 않다는 것에 동의한다. 나도 그것이 어떻게 잘못되었는지 확실하지 않다. 왜냐하면 나는 이미 한동안 이 라이브러리를 사용하지 않았기 때문이다.
일반적으로 나는 본 기기pause에서 동시에 일시 정지와 복구를 실현하는 것을 좋아하지 않는다.나는 JSAPI가 현식pauseresume 함수를 갖추고 적당한 본기 방법을 호출해야 한다고 생각한다.우리가 이번 홍보에서 iOS와 안드로이드 시스템을 동시에 사용해서 이 점을 할 수 있을까?당신은 어떻게 생각합니까?

토론 #7

이 오류는 내가 예시 프로그램을 새로 설치했을 때 발생했습니다.먼저 이 방법들의 서명을 어떻게 복구하는지 보고 어떻게 작동하는지 봅시다.

토론 #8

나는 다른 PR을 열고 수정을 했는데 지금은 안드로이드와 iOS에서 실행할 수 있을 것 같다.이것이 당신에게 적합한지 알려 주십시오. @lmarmol

토론 #9

은 #233으로 마감됩니다.

토론 #10

@jsierles, 일시 정지와 복구는 두 개의 다른 API 호출이어야 한다는 것에 동의합니다.이것은 전보 사건을 처리할 때 특히 유용해서 자동으로 녹음을 멈추고 복구할 수 있다.나는 이 점을 실현하는 것을 돕고 싶다.

토론 #11

네. - 저는 #233에서 이 모든 복구를 합병했습니다.더 많은 작업이나 더 명확한 API가 필요한 경우 언제든지 다른 PR을 제출하십시오.현재pause/resume는javascript에서 서로 다른 호출이지만,native에서는 같은 호출입니다. 구체적인 것은 코드에 달려 있습니다.도와줘서 고마워요!

토론 #12

두 분의 위대한 일에 감사 드립니다!

토론 #13

만약 우리가 그것을 API 24 이하에서 일하게 할 수 있다면 정말 좋겠다.
그러나 나는 이것이 매우 어려운 일이 될 것이라고 생각한다.
다음 링크에서는 Android에 대해 설명합니다.
https://stackoverflow.com/questions/39321420/pause-resume-with-android-mediarecorder-api-level-24

토론 #14

@benevbright 홍보에 관심이 있습니까?

토론 #15

아니요, 그럴 수 없어요.요 며칠 나는 시간이 없다.
언젠가는 명심하겠습니다.

좋은 웹페이지 즐겨찾기