일시정지/기록 복원을 지원하는 안드로이드 버전에 일시정지/기록 복원 추가
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가 현식pause
과 resume
함수를 갖추고 적당한 본기 방법을 호출해야 한다고 생각한다.우리가 이번 홍보에서 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
아니요, 그럴 수 없어요.요 며칠 나는 시간이 없다.언젠가는 명심하겠습니다.
Reference
이 문제에 관하여(일시정지/기록 복원을 지원하는 안드로이드 버전에 일시정지/기록 복원 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/jsierles/react-native-audio/issues/232텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)