Java 在从不同的活动中获取相机后,有没有办法从不同的活动中释放相机。?

Java 在从不同的活动中获取相机后,有没有办法从不同的活动中释放相机。?,java,android,camera,flashlight,Java,Android,Camera,Flashlight,我正在开发一个手电筒应用程序,其中一个活动中有一个普通手电筒,一个活动中有一个闪光灯。现在我在一次手电筒活动中获得了相机。但当我要进行频闪活动时,我需要释放通过手电筒活动获取的相机。我不想在手电筒活动暂停时释放相机,因为即使用户按下“主页”按钮,相机也会停止。我只想在用户进入选通活动或通过后退按钮退出应用程序时释放相机。另外,如果用户从频闪活动返回到手电筒活动,我想重新获取相机。我只想在用户进入选通活动或按后退按钮退出应用程序时才释放相机。 如果不尽快释放相机资源,用户将无法从任何其他应用程序使

我正在开发一个手电筒应用程序,其中一个活动中有一个普通手电筒,一个活动中有一个闪光灯。现在我在一次手电筒活动中获得了相机。但当我要进行频闪活动时,我需要释放通过手电筒活动获取的相机。我不想在手电筒活动暂停时释放相机,因为即使用户按下“主页”按钮,相机也会停止。我只想在用户进入选通活动或通过后退按钮退出应用程序时释放相机。另外,如果用户从频闪活动返回到手电筒活动,我想重新获取相机。我只想在用户进入选通活动或按后退按钮退出应用程序时才释放相机。

如果不尽快释放相机资源,用户将无法从任何其他应用程序使用相机。例如,如果应用程序的用户按下“主页”按钮,则应用程序将锁定相机对象。这将导致麻烦的行为:例如,用户无法启动摄像头应用程序

建议如下:

重要信息:调用release()释放摄像头供其他应用程序使用。应用程序应在onPause()中立即释放相机


我只想在用户进入选通活动或通过后退按钮退出应用程序时释放摄像头

如果您不手动释放相机资源,它们将不会被释放。只需按下后退按钮并“退出”您的应用程序即可

如果用户从频闪活动返回闪光灯活动,我还想重新获取相机。他们是否愿意这样做?


只需在onResume()中连接到您的相机,并在onPause()中释放资源。

我不会要求您停止做您想做的事情,也不会告诉您官方建议

您可以使用单独的类来处理Camera,并将其所有函数和成员声明为静态,从而实现该功能。

  • 每当您切换到频闪活动时,只需在onCreate of strobe activity中使用该单独类的静态函数来释放相机
  • 在手电筒活动的
    ondestory()
    中执行相同的操作,但是如果在切换到闪光灯活动时执行
    finish()
    手电筒活动,则无需执行上述步骤,您的工作将仅通过此步骤完成

    • 其他答案告诉您不要这样做,以及为什么要这样做。但要回答你的问题:

      在静态成员变量中保留对
      摄影机
      实例的引用,最好在单独的类中,如下所示:

      public class Globals {
          public static Camera myCamera;
      }
      
      此变量可作为
      Globals.myCamera
      用于所有活动


      将调用
      Camera.open()
      得到的
      Camera
      实例放入
      Globals.myCamera
      中。这两项活动都可以使用。准备好释放摄像头时,请调用
      Globals.myCamera.release()
      ,然后将
      Globals.myCamera
      设置为
      null
      ,以指示您不再控制摄像头。

      对此的最佳解释是David Wasser。我们可以创建摄影机的全局实例,然后在需要时使用它

      公共类全局{ 公共静态摄像机; }


      尽管另一个解决方法是创建按钮,以移动到每种类型的灯光中,并且每个人都有不同的类。在这种情况下,我们可以保持相机上的onpause不变,因此按下home按钮时不会关闭相机,但我们可以在用户进入包含选择相机灯光类型按钮的活动时立即释放相机。因此,在选择时,相机将始终处于空闲状态。

      使用情况如何?当用户按下home键时,为什么您希望相机保持打开状态?实际上,除非用户按下exit键或将其关闭,否则手电筒应处于打开状态。用户如何进入选通活动
?应该有一些按钮或正确的东西。您可以在用户在进入该活动之前按下该按钮时释放相机!正确实施