Intent不设置相机参数

2023-12-14

我正在打开相机应用程序作为我的应用程序的外部意图。我使用以下代码来调用相机,以下是我的条件:

  1. 它应该打开前置摄像头。
  2. 最高的图像质量。
  3. 闪光灯必须打开

以下是我的代码:

Intent action = new Intent("android.media.action.IMAGE_CAPTURE");   

        action.putExtra("android.intent.extras.CAMERA_FACING", 1);
        action.putExtra("android.intent.extras.FLASH_MODE_ON", 1);
        action.putExtra("android.intent.extras.QUALITY_HIGH", 1);

现在,它确实打开了前置摄像头,但没有打开闪光灯,也没有将图片质量设置为高。

我的清单文件的权限部分如下所示:

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

我有什么遗漏的吗?


不幸的是,当使用带有 Intent 的相机时,您可以设置的唯一额外参数是

MediaStore.EXTRA_OUTPUT

Eg

fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name

它允许您映射相机应用程序存储图像的位置。

面向相机的意图额外有时可以起作用:

action.putExtra("android.intent.extras.CAMERA_FACING", 1);

查看android源文件,Util类文件中有一些“测试”方法,但没有正式记录:

(Util)

private static final String EXTRAS_CAMERA_FACING =
        "android.intent.extras.CAMERA_FACING";

// This is for test only. Allow the camera to launch the specific camera.
public static int getCameraFacingIntentExtras(Activity currentActivity) {
    int cameraId = -1;

    int intentCameraId =
            currentActivity.getIntent().getIntExtra(Util.EXTRAS_CAMERA_FACING, -1);

    if (isFrontCameraIntent(intentCameraId)) {
        // Check if the front camera exist
        int frontCameraId = CameraHolder.instance().getFrontCameraId();
        if (frontCameraId != -1) {
            cameraId = frontCameraId;
        }
    } else if (isBackCameraIntent(intentCameraId)) {
        // Check if the back camera exist
        int backCameraId = CameraHolder.instance().getBackCameraId();
        if (backCameraId != -1) {
            cameraId = backCameraId;
        }
    }
    return cameraId;
}

而在photomodule中,使用了以下方法:

(照片模块)

private int getPreferredCameraId(ComboPreferences preferences) {
    int intentCameraId = Util.getCameraFacingIntentExtras(mActivity);
    if (intentCameraId != -1) {
        // Testing purpose. Launch a specific camera through the intent
        // extras.
        return intentCameraId;
    } else {
        return CameraSettings.readPreferredCameraId(preferences);
    }
}

当相机应用程序初始化照片模式时,它会调用此方法来检查要使用哪个相机:

mCameraId = getPreferredCameraId(mPreferences);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Intent不设置相机参数 的相关文章

随机推荐

  • 如何在 SQL Server 2008 中删除重复行?

    如何删除 SQL Server 2008 中的重复行 最简单的方法是使用 CTE 公用表表达式 当我有原始数据要导入时 我会使用这种方法 我清理它的第一件事是确保没有重复 我对每一行都有某种唯一的句柄 Summary WITH number
  • 如何将多个提交合并到另一个分支作为单个压缩提交?

    我有一个远程 Git 服务器 这是我想要执行的场景 对于每个错误 功能 我创建一个不同的 Git 分支 我继续使用非官方 Git 消息在该 Git 分支中提交代码 在顶级存储库中 我们必须使用官方 Git 消息针对一个错误进行一次提交 那么
  • 为什么 try except 块在 python 3.7 的 Visual Studio 代码中不起作用?

    实现 try except 块时 VS Code 无法识别指定的异常或与此相关的任何异常 前任 try x 1 0 except ZeroDivisionError print You cannot divide by zero 通过终端执
  • 从 contenteditable 填充并保存文本

    我正要开始写自己的富文本编辑器但需要知道是否可以填充文本区域以及如何保存 使用其中的数据 我目前正在使用 CKEditor 但它对于我想要的东西来说太笨重和太大 我将以此为基础 http jsfiddle net Kxmaf 6 我还需要对
  • 如何在自定义验证规则的 pass 函数中发送多个参数

    我正在实现一个自定义验证规则 该规则应该在自定义验证规则的传递函数中采用另一个带有属性和值的参数 当我们在编写自定义验证时实现 Rule 接口时 它不允许我们在 pass 函数中添加第三个参数 但我需要第三个参数 此外 如果有人能够指导我在
  • PLS-00428:此 SELECT 语句中需要 INTO 子句

    我想将 Rownum 存储为变量 而不是使用昂贵的 Join 我需要从 Select 语句中获取此值 因为 Rownum 在不同环境中会有所不同 因此它不能是代码中的文字字符串 对于上下文 此查询在 Oracle Siebel CRM 模式
  • 为什么 不起作用?

    我使用JSF 2 0 hibernate validator4 2 jarvalidation api jar tomcat和Eclipse I put Size min 3 message xxx ManagedBean 中的注释和
  • 构造类对象后执行代码

    我希望通过让每个子类在父类保存的列表中注册自己来创建给定类的所有子类的列表 即如下所示 class Monster object monsters list class Lochness Monster Monster monsters a
  • 如何使用knitr在代码块内的子图之间插入分页符

    我有以下 R arkdown 代码 output pdf document default keep tex yes header includes usepackage subfig r setup include FALSE knitr
  • Lambda 不将消息放入 dlq

    我只是想测试 Lambda 的 DLQ 但我不明白为什么消息没有放在上面 我的代码只做了一件事throw new Exception Test 第一个错误是可以理解的 我试图使用按钮同步执行此操作Test 之后我设置Kinesis并开始在其
  • 具有多个数组的 Foreach 循环[重复]

    这个问题在这里已经有答案了 这就是我要的 foreach POST something as something foreach POST example as example query mysql query INSERT INTO t
  • 如何用php组合两个具有相同索引和值的数组? [复制]

    这个问题在这里已经有答案了 我有 2 个数组 如下所示 array1 0 gt no invoice gt INV0001 product code gt 1111111 1 gt no invoice gt INV0001 product
  • 按父组和子项对父子记录进行排序

    我需要按特定的两个相关列对查询结果进行排序 我的桌子是 Row no Col 1 Col 2 Col 3 Col 4 1 1 X 1 5 2 2 Y 1 6 3 5 Z 2 7 4 6 T 2 0 5 7 T 3 0 6 6 W 2 0 中
  • 寻找 snprintf() 的 C 源代码

    我需要将 snprintf 移植到另一个不完全支持 GLibC 的平台 我正在 Glibc 2 14 源代码中寻找底层声明 我跟踪了许多函数调用 但卡在了 vfprintf 上 然后它似乎调用 IO vfprintf 但我找不到定义 宏可能
  • 具有当前用户 ID 的角色分配

    我使用 Azure AD 应用程序注册原则通过 Azure 资源管理器部署资源 以通过管道进行部署 在部署过程中 我需要为部署用户设置一些权限 以确保它有足够的权限 例如上传文件 由于我使用不同的原则 并且我没有在代码中管理这些原则 因此我
  • Visual Studio 2008 安装程序,自定义操作。断点未触发

    我有一个带有自定义操作项目的安装程序 我希望该操作在安装时触发 当我向事件日志写入内容时 该操作会触发 它运行得很好 但我确实需要调试该文件 因为操作非常复杂 所以我有以下安装程序类 namespace InstallerActions u
  • 使用 xpath 获取节点的第 N 个子节点

    我的示例输入 XML 是
  • 如何用编译时泛型验证替换运行时instanceof检查

    对于真正的 Java 泛型专家来说 有一个小难题 假设我有以下两个接口 interface Processor void process Foo foo interface Foo Processor getProcessor 例如 以下两
  • 对列进行排序并选择每组 pandas 数据框中的前 n 行

    我有一个像这样的数据框 mainid pidx pidy score 1 a b 2 1 a c 5 1 c a 7 1 c b 2 1 a e 8 2 x y 1 2 y z 3 2 z y 5 2 x w 12 2 x v 1 2 y
  • Intent不设置相机参数

    我正在打开相机应用程序作为我的应用程序的外部意图 我使用以下代码来调用相机 以下是我的条件 它应该打开前置摄像头 最高的图像质量 闪光灯必须打开 以下是我的代码 Intent action new Intent android media