【问题标题】:Turning on the flashlight on Android? Most compatible approach?在Android上打开手电筒?最兼容的方法?
【发布时间】:2013-02-09 02:04:52
【问题描述】:

在长期从事 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,here,如果您想试用它,请告诉我它是否可以在您的设备上运行 :)

感谢您的帮助!

【问题讨论】:

    标签: android camera android-camera flashlight


    【解决方案1】:

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

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
                camera.setPreviewDisplay(mSurfaceView.getHolder());
            }
    

    【讨论】:

    • camera.setPreviewDisplay(mSurfaceView.getHolder());早期版本需要,否则相机预览将为空白。在运行版本 2.3.6 的三星 Galaxy Ace 上测试
    【解决方案2】:

    首先检查设备是否支持闪光灯或不低于代码:

       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 
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      相关资源
      最近更新 更多