【问题标题】:Front Flash light in AndroidAndroid中的前置闪光灯
【发布时间】:2018-09-28 21:11:38
【问题描述】:

我正在开发一个应用程序,当用户按下按钮前手电筒打开时,我想要它。我知道如何打开后置摄像头闪光灯。
但我不知道如何在同一个应用程序中打开前置摄像头手电筒。任何人都会指导我如何做到这一点?

【问题讨论】:

  • 检查here。您可以轻松地从其他资源中获得支持。我建议您确保您的代码使用 Camera API 2。
  • 给定的解决方案只检查了设备中是否有可用的闪存。而我想检查前置摄像头中闪光灯的可用性。

标签: android


【解决方案1】:

我认为没有“前置闪光灯”之类的东西。在这个阶段我唯一能想到的就是前面的通知 LED 灯。即使看着我的三星 S6 Edge 设备,我的相机上也找不到任何前置闪光灯。



以下代码仅适用于后闪光灯。
我相信你需要做三件事。

1 - 检查设备上是否有可用的闪存
2 - 在您的清单中设置相应的权限
3 - 实现代码来操作 Flash 功能

此代码将根据 Flash 功能的可用性返回一个布尔值

context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

接下来是清单文件中的权限

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" /> 

第一个权限是摄像头,第二个权限是手电筒,不需要激活摄像头硬件

最后,打开闪光灯的代码

Camera myCamera = Camera.open();     
Parameters myParameters = myCamera .getParameters();
myParameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
myCamera.setParameters(p);
myCamera.startPreview();

关闭服务

myCamera.stopPreview();
myCamera.release();

要测试的附加功能

  CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);

  try {
    String cameraId = cameraManager.getCameraIdList()[0];
    cameraManager.setTorchMode(cameraId, true);
    flashLightStatus = true;
    imageFlashlight.setImageResource(R.drawable.btn_switch_on);
  } catch (CameraAccessException e) {
  }

这可能有助于从 getCameraIdList 函数获取前置摄像头可访问性。通常前置摄像头在第一位置。

【讨论】:

  • 给定的解决方案适用于手电筒。当我想打开前置闪光灯时..
  • @AsmaAhmad 请再看看答案,因为我添加了额外的功能来测试
  • 您的附加代码也适用于背面手电筒
  • @AsmaAhmad 经过大量研究后得出的结论是,我认为没有“前置闪光灯”之类的东西。在这个阶段我唯一能想到的就是前面的通知 LED 灯。即使看着我的三星 S6 Edge 设备,我的相机上也找不到任何前置闪光灯。
  • 是的,你是对的。经过这么多搜索,我也找到了同样的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多