我正在使用自定义相机在 Android 上录制视频。 遇到问题的设备是装有 Android 6.0.1 的 Nexus 5。
当相机完成仅第二次的录制时,我在底层的 android 媒体 AudioTrack 类中得到以下异常。这是由 Android 和 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 类的实例。
有什么建议吗?
最佳答案
所以我认为这可能是一个 Android 错误。看起来很像这个问题,它在“ future 版本”中被标记为已修复:https://issuetracker.google.com/issues/37138597
Android 7.1.2 中报告的相同问题
已在 Android 8.0 中修复 https://android.googlesource.com/platform/frameworks/base/+log/aee6ee94675d56e71a42d52b16b8d8e5fa6ea3ff/media/java/android/media/PlayerBase.java
关于java - Android media.AudioTrack.finalize 抛出 IllegalStateException : Binder has been finalized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40934773/