我正在使用自定义相机在安卓上录制视频。出现问题的设备是安卓 6.0.1 的 Nexus 5。
当相机进行第二次录制时,在底层的安卓媒体 AudioTrack 类中会出现以下异常。这是由安卓 FinalizerDaemon 隐式调用的,并不是我直接执行的代码导致的。因此,FinalizerDaemon 调用 AudioTrack 上的 finalize,并出现 IllegalStateException 异常。
也许我需要在相机录制完成后进行一些清理工作?这是我目前停止录制时使用的代码:
当相机进行第二次录制时,在底层的安卓媒体 AudioTrack 类中会出现以下异常。这是由安卓 FinalizerDaemon 隐式调用的,并不是我直接执行的代码导致的。因此,FinalizerDaemon 调用 AudioTrack 上的 finalize,并出现 IllegalStateException 异常。
12-02 09:20:23.155 23705-23714/social.ivideo.greetings E/System: Uncaught exception thrown by finalizer
12-02 09:20:23.160 23705-23714/social.ivideo.greetings E/System: java.lang.IllegalStateException: Binder has been finalized!
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:615)
at com.android.internal.app.IAppOpsService$Stub$Proxy.stopWatchingMode(IAppOpsService.java:435)
at android.media.PlayerBase.baseRelease(PlayerBase.java:136)
at android.media.AudioTrack.finalize(AudioTrack.java:979)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:222)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:209)
at java.lang.Thread.run(Thread.java:761)
也许我需要在相机录制完成后进行一些清理工作?这是我目前停止录制时使用的代码:
@Override
public void stopRecording(boolean wasCancelled, float duration) {
if (mMediaRecorder != null) {
mMediaRecorder.stop();
mMediaRecorder.reset();
if (flashState) {
toggleFlash();
}
if (!wasCancelled) {
callbacks.onFinishedRecording(null, mediaPath, duration, wasCancelled);
}
}
}
mMediaRecorder是MediaRecorder类的一个实例。
有任何建议吗?