如何在Android中以编程方式关闭相机的闪光灯?

时间:2015-10-21 05:57:55

标签: android android-camera

如何以编程方式在Android中通过意图关闭相机的闪光灯?

我使用以下代码激活相机应用程序,然后拍摄照片并返回我的应用程序。

String packageName = takePictureIntent.resolveActivity(packageManager).getPackageName();
if (mPhotoFileUri != null)
      getActivity().grantUriPermission(packageName, mPhotoFileUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mPhotoFileUri);

startActivityForResult(takePictureIntent, TAKE_PICTURE);

我想在默认打开时关闭相机闪光灯。它可能如何?

建议将不胜感激: - )

2 个答案:

答案 0 :(得分:0)

在Android中打开/关闭手机摄像头或手电筒,您可以使用以下内容:

Camera camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();

并且,不要忘记在AndroidManifest.xml上添加以下权限。

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

修改-1:

不幸的是,将相机与Intent一起使用时,您可以设置的唯一额外参数是

MediaStore.EXTRA_OUTPUT

我猜您无法通过Intent进行更改。参考this question

答案 1 :(得分:0)

为此您应该这样做:

1)检查闪光灯是否可用?

2)如果是,则关闭/开启

3)如果没有,那么你可以根据你的应用做任何事情。需要

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

您可以使用以下

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

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

有关详细信息,请参阅link

打开/关闭手电筒:

我用Google搜索了一下这个关于android.permission.FLASHLIGHT的内容。 Android清单&#39;许可看起来很有希望:

<!-- 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();

关闭相机指示灯的代码段。

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

问题:

打开/关闭手电筒时也存在一些问题。例如。对于没有FLASH_MODE_TORCH的设备,或者即使它有,但手电筒也没有打开等。

通常三星会产生很多问题。

您可以参考以下列表中的问题:

1)Use camera flashlight in Android

2)Turn ON/OFF Camera LED/flash light in Samsung Galaxy Ace 2.2.1 & Galaxy Tab

参考链接: How to turn on camera flash light programmatically in Android?