小编典典

如何在 Android 中以编程方式打开前置闪光灯?

all

我想在 Android
中以编程方式打开前置闪光灯(不带相机预览)。我用谷歌搜索了它,但我找到的帮助将我引到了这个页面

有没有人有任何链接或示例代码?


阅读 89

收藏
2022-05-23

共1个答案

小编典典

对于 2021 年,使用 CameraX,现在变得非常容易:


对于这个问题,你应该:

  1. 检查手电筒是否可用?

  2. 如果是这样,则关闭/打开

  3. 如果没有,那么您可以根据您的应用需求做任何事情。

检查设备中闪存 的可用性:

您可以使用以下内容:

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

如果闪存可用,则返回 true,否则返回 false。

请参阅:http:
//developer.android.com/reference/android/content/pm/PackageManager.html
了解更多信息。

打开/关闭手电筒:

我用谷歌搜索并得到了关于 android.permission.FLASHLIGHT 的信息。Android manifests 的权限看起来很有希望:

 <!-- Allows access to the flashlight -->
 <permission android:name="android.permission.FLASHLIGHT"
             android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
             android:protectionLevel="normal"
             android:label="@string/permlab_flashlight"
             android:description="@string/permdesc_flashlight" />

然后使用Camera并设置Camera.Parameters。这里使用的主要参数是FLASH_MODE_TORCH

例如。

代码片段打开相机手电筒。

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

关闭相机 LED 灯的代码片段。

  cam.stopPreview();
  cam.release();

我刚刚找到了一个使用此权限的项目。检查快速设置的源代码。这里http://code.google.com/p/quick-
settings/(注意:此链接现已损坏)

对于手电筒直接看 http://code.google.com/p/quick-settings/source/browse/trunk/quick-
settings/#quick-
settings/src/com/bwx/bequick/flashlight(注意:这个链接是现在坏了)

更新6 您还可以尝试按照此答案中所述添加 SurfaceView LED 手电筒 on Galaxy Nexus 可通过什么 API
控制?
这似乎是适用于许多手机的解决方案。

更新 5 主要更新

我找到了一个替代链接(对于上面断开的链接):http
://www.java2s.com/Open-Source/Android/Tools/quick-
settings/com.bwx.bequick.flashlight.htm您现在可以使用它关联。[更新:14/9/2012 此链接现已损坏]

2022-05-23