3

在成为一名长期的 Java 开发人员之后,我刚刚开始为 Android 编程,并且我创建了一个小手电筒应用程序(好像还不够 xD)。我意识到有这么多不同的手机,我读到有时很难让 LED 灯在所有设备上持续打开,因为有些需要不同的方法。

我目前使用这种方法打开相机 LED:

camera = Camera.open();

Camera.Parameters params = camera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.setPreviewDisplay(holder);
camera.startPreview();

显然,我不能真正使用模拟器来确保闪存正常工作,所以我只能在三星 Galaxy Nexus 和 Nexus 4 上对其进行测试。两者都可以,但我想知道这是否是最兼容的方法还是我应该做些什么来使它适用于更多设备?

另外附注我已将应用程序免费发布到 Google Play,在这里,如果您想尝试它并让我知道它是否可以在您的设备上运行 :)

感谢您的帮助!

4

2 回答 2

1

我自己只是为了好玩而做了一个。我意识到如果您在 GingerBeard 设备中执行 setPreviewDisplay(holder),它将无法正常工作。所以我做了这样的事情。

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            camera.setPreviewDisplay(mSurfaceView.getHolder());
        }
于 2013-02-09T02:08:22.613 回答
0

首先检查设备是否支持闪光灯或不下面的代码:

   boolean hasFlash = SevenBitsDemo.getInstance().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
   if (hasFlash) {
     // device support flash light:
     Camera.Parameters  cameraParams = mCamera.getParameters();
     cameraParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
   }else{
    // device is not support flash light 
   }
于 2017-04-26T09:30:42.857 回答