【发布时间】:2015-07-23 18:07:02
【问题描述】:
我的应用程序关闭,并在 Renderer 类中发布后调用了错误方法。我进行了搜索,但没有运气...我尝试了一些对其他人有帮助的解决方案(例如 camera.setPreviewCallback(null); )但没有...我仅在带有 OS 4.4.2 的 Samsung Note 10.1 上遇到此问题。在其他设备上它可以正常工作。
这是 ImageRenderer 类中发生错误的地方:(in line camera.setPreviewTexture(mSurfaceTexture);)
public void setUpSurfaceTexture(final Camera camera, final GLSurfaceView surfaceView) {
runOnDraw(new Runnable() {
@Override
public void run() {
int[] textures = new int[1];
GLES20.glGenTextures(1, textures, 0);
mSurfaceTexture = new SurfaceTexture(textures[0]);
try {
camera.setPreviewTexture(mSurfaceTexture);
camera.setPreviewCallback(GPUImageRenderer.this);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
什么会导致这个错误?以及它如何在我尝试过的所有设备上运行,除了这台设备?
错误日志:
01-08 14:52:27.791: E/AndroidRuntime(22887): FATAL EXCEPTION: GLThread 1666
01-08 14:52:27.791: E/AndroidRuntime(22887): Process: jp.co.cyberagent.android.gpuimage.sample, PID: 22887
01-08 14:52:27.791: E/AndroidRuntime(22887): java.lang.RuntimeException: Method called after release()
01-08 14:52:27.791: E/AndroidRuntime(22887): at android.hardware.Camera.setPreviewTexture(Native Method)
01-08 14:52:27.791: E/AndroidRuntime(22887): at jp.co.cyberagent.android.gpuimage.GPUImageRenderer$2.run(GPUImageRenderer.java:157)
01-08 14:52:27.791: E/AndroidRuntime(22887): at jp.co.cyberagent.android.gpuimage.GPUImageRenderer.onDrawFrame(GPUImageRenderer.java:115)
01-08 14:52:27.791: E/AndroidRuntime(22887): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1532)
01-08 14:52:27.791: E/AndroidRuntime(22887): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1249)
【问题讨论】:
-
错误?请发布 logcat。
-
关于您的帖子“释放相机的可能重复:“释放()后调用的方法”异常”,正如我所写,我已经尝试过 camera.setPreviewCallback(null);没有帮助:(
-
我知道它很难调试(我在这个错误上花了几个小时),但它必须是。这就是“release() 之后调用的方法”错误的含义。这也取决于设备,我知道...我只能建议您尝试使用我链接的一些答案。