如何以编程方式在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);
我想在默认打开时关闭相机闪光灯。它可能如何?
建议将不胜感激: - )
答案 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?