WebRTCExtension icon indicating copy to clipboard operation
WebRTCExtension copied to clipboard

问题标题:"Java 中在内部类中访问非 final 变量 'adm' 导致错误"

Open alexivaner opened this issue 3 months ago • 0 comments

你好,我想问一下如何将 JavaAudioDeviceModuleExtKt 附加到 onWebRtcAudioTrackStart,例如我有这段代码:

adm = JavaAudioDeviceModule.builder(reactContext)
                .setAudioTrackStateCallback(
                    new JavaAudioDeviceModule.AudioTrackStateCallback() {
                        @Override
                        public void onWebRtcAudioTrackStart() {
                            JavaAudioDeviceModuleExtKt.setAudioTrackSamplesReadyCallback(adm, audioSamples -> {
                                //音频输出数据,通话时对方数据,原始pcm数据,可以直接录制成pcm文件,再转成mp3
                                int audioFormat = audioSamples.getAudioFormat();
                                int channelCount = audioSamples.getChannelCount();
                                int sampleRate = audioSamples.getSampleRate();
                                //pcm格式数据
                                byte[] data = audioSamples.getData ();
                            });
                        }

                        @Override
                        public void onWebRtcAudioTrackStop() {

                        }
                    }
                )
                .setEnableVolumeLogger(false)
                .setSamplesReadyCallback(saveRecordedAudioToFile)

                .setAudioRecordErrorCallback(audioRecordErrorCallback)
                .setAudioTrackErrorCallback(audioTrackErrorCallback)
                .setAudioRecordStateCallback(audioRecordStateCallback)
                .createAudioDeviceModule();
        }

这会导致一个错误:变量 'adm' 从内部类中访问,需要是 final 或 effectively final,因为在 Java 中 adm 总是为空。

alexivaner avatar Mar 24 '24 12:03 alexivaner