【问题标题】:How to handle camera flash in application life cycle如何在应用程序生命周期中处理相机闪光灯
【发布时间】:2014-05-04 11:30:46
【问题描述】:

我不知道如何在我的应用中处理相机闪光灯。 我的应用程序有一个按钮可以打开和关闭相机闪光灯,一切正常,应用程序工作正常,即使按下返回按钮并返回应用程序也能正常工作。

但是当我在应用程序运行时按下 HOME 按钮,然后回到我的应用程序时,当我按下 ON 和 OFF 按钮时它会崩溃(强制关闭)。 我认为问题出在应用程序的生命周期中,但我不知道如何解决。

在 onStop() 方法中,我使用以下代码:

@Override
    protected void onStop() {
        super.onStop();

        if (camera != null) {
            camera.stopPreview();
            camera.release();
        }

并使用以下代码在 onCreate() 方法中打开闪存:

                Parameters p = camera.getParameters();
                if (!isLightOn) {
                    p.setFlashMode(Parameters.FLASH_MODE_TORCH);
                    camera.setParameters(p);
                    camera.startPreview();
                    isLightOn = true;
                                }

【问题讨论】:

  • 而不是onCreate/onStoponResume中初始化你的相机并在onPause中释放它和它的surfaceView。另外,如果您遇到类似问题,请参阅stackoverflow.com/questions/8481402
  • @kiruwka ,该链接的答案对我没有帮助,正如您所说,我在onResume() 中更改了我的代码和初始化相机并在onPause() 中发布了它,但仍然无法正常工作,我不熟悉surfaceView,不知道如何发布surfaceView
  • 在 kiruwka 和 @Fox in socks 以及此链接 link 的帮助下,我的应用程序现在可以正常工作了,有关更多信息,请查看链接。

标签: android camera camera-flash


【解决方案1】:

您需要覆盖您的活动的onResume 方法。它可能看起来像这样:

@Override
protected void onResume() {
    super.onResume();

    if(camera == null){
        camera = getCamera();
        try {
            SurfaceHolder holder = cameraPreview.getHolder();
            camera.setPreviewDisplay(holder);

            cameraPreview.setCamera(camera);
            holder.addCallback(cameraPreview);

            camera.startPreview();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

【讨论】:

  • 对不起,我不知道你的代码是做什么的以及如何在我的应用程序中使用你的代码,还有其他方法可以在 onResume() 方法中处理 flash 吗?
  • @MehrdadSalimi 不是闪光灯的问题,而是相机实例的问题。当您调用主页按钮方法onStop 调用。然后,当您启动您的应用方法时,onCreate 不会调用。
  • 我在onResume() 中更改了代码并启动了摄像头,但仍然无法正常工作,我重写了onPause() 方法并在其中使用了camera.release(),但仍然无法正常工作。
  • @MehrdadSalimi 您不能只更改代码,您必须了解activity 的生命周期以及如何使用相机。并使用 logcat,它可以定位问题。 “仍然行不通”没有意义。
  • 我了解activity的生命周期,我的主要问题是“如何在activity生命周期中打开和释放相机,我终于在这里找到了答案link,谢谢你的帮助。(我会尝试在以后的调试中使用 logcat)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多