java - 屏幕解锁后相机卡住

标签 java android android-camera

我目前正在开发照片相机应用程序,但遇到了一些问题:如果您锁定屏幕然后解锁,图像会卡住。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(layout.activity_main);

    //...

    surfaceView = (SurfaceView) findViewById(id.surfaceView);
    holder = surfaceView.getHolder();
    holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

    holderCallback = new HolderCallback();
    holder.addCallback(holderCallback);
}
    @Override
protected void onResume() {
    super.onResume();
    camera = Camera.open(CAMERA_ID);
}

    @Override
protected void onPause() {
    super.onPause();
    if (camera != null) {
        camera.setPreviewCallback(null);
        camera.stopPreview();
        camera.release();
        camera = null;
    }
}

(CameraOverlay() 是扩展 SurfaceView 并实现 SurfaceHolder.Callback 的类。- 来自有类似问题的帖子) 我没有在任何地方使用 CameraOverlay,我是否必须创建它只是为了在解锁屏幕后恢复预览。

我已经搜索了关于这个主题的多个帖子,但找不到任何适合我的解决方案,请帮忙。我刚开始为 Android 开发。

最佳答案

这是您的另一个选择。 onResume() 将在每次再次查看应用程序时调用。问题是您在 onPause() 中将预览回调设置为 null,然后没有在您的 `onResume()' 中修复它。

因此,将您的 onResume() 更改为:

@Override
protected void onResume() {
    super.onResume();
    camera = Camera.open(CAMERA_ID);
    holder = surfaceView.getHolder();
    holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    holderCallback = new HolderCallback();
    holder.addCallback(holderCallback);
}

这应该可以解决您的问题。如果没有,请告诉我

关于java - 屏幕解锁后相机卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27162664/

相关文章:

java - 在 android 的 ListView 中将来自 SQLite 的两列显示为相同的字符串

android - 为什么 "plus"在 Android 中引用名称中为 ID 资源签名

java - 在java中解析JSON : Malformed JSON: Unexpected 'C'

java - 搜索列表给出错误结果

java - 使用 Java 8 自签名证书

java - 内部应用程序相机照片不正确地保存到图库

android - 将相机拍照 Intent 中的图像保存到应用程序私有(private)存储

java - Vertx 实例化多个垂直实例监听同一套接字

android - 我无法在 android 上运行应用程序,但模拟器可以

android - 为什么在一个简单的 Android 相机应用程序中会出现模糊图像?