gpt4 book ai didi

android - 释放 surfaceChanged 中的相机对象导致强制关闭(空指针异常)

转载 作者:行者123 更新时间:2023-11-29 00:23:06 28 4
gpt4 key购买 nike

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {

..........
.......

public void surfaceCreated(SurfaceHolder holder) {
........
..........
// I create camera object with camera.open
}

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// I start camera preview successfully and call my function.
Myfunction();
//this function does some checking (a separate thread ) n releases camera object immediately and also release the camera preview
}
}

现在,当控件离开此函数时,我仍在 onsurfaceChanged() 中,我在 SurfaceView (564) 处获得强制关闭(空指针异常) 。我知道这个错误是因为我释放了相机及其表面 View 。根据 android 的文档,onsurfaceChanged()surfaceCreated();

之后至少被调用一次

所以我的查询是错误的,我在控件退出 onsurfaceChanged() 之前释放相机对象及其预览持有者?我的要求是我检查一些情况 n 如果它的条件为假,一旦创建预览即释放相机,即 startPreview();onsurfaceChanged() 本身内部提前执行一些任务。

有什么方法可以检测到 onsurfaceChanged() 被调用一次,然后我可以触发 Myfunction();

最佳答案

简单的解决方法是使用 CameraPreview.post() 在您的回调返回后 释放相机:

public class CameraPreview … {

void Myfunction() {

this.post(new Runnable() {
public void run() {
mCamera.release();
mCamera = null;
}
}

}
}

关于android - 释放 surfaceChanged 中的相机对象导致强制关闭(空指针异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21720347/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com