Android NativeCamera打开了相机闪光灯关闭模式

时间:2014-11-03 10:02:02

标签: android flash camera

我需要使用FlashMode Off显示Android原生相机(使用意图)。

我已经读过,意图参数不会得到保证结果,因为它取决于电话设备的实现。

有人可以确认一下吗?我找不到关于那个的官方信息

String fileName = "new-photo-name.jpg";
//create parameters for Intent with filename
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, fileName);
        values.put(MediaStore.Images.Media.DESCRIPTION, "Image capture by camera");
//imageUri is the current activity attribute
        Uri imageUri = getContentResolver().insert(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
//create new Intent
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra("android.intent.extras.FLASH_MODE_OFF",1);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
        startActivityForResult(intent, 1);

1 个答案:

答案 0 :(得分:1)

为此你应该这样做:

  1. 检查闪光灯是否亮起 可用与否?

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

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

  4. 对于检查设备中的闪存可用性

    您可以使用以下

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

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

    有关详细信息,请参阅http://developer.android.com/reference/android/content/pm/PackageManager.html

    打开/关闭手电筒:

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

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