You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:拍照后如何验证两个按钮均已完成拍照操作

实现方案

核心思路

你原有代码里的requestCode == IMAGE_REQUEST && requestCode == IMAGE_REQUEST_2逻辑永远不可能触发,因为onActivityResult每次回调只会返回一个拍照请求的结果,不可能同时对应两个请求码。我们可以新增两个布尔标记位记录两个拍照操作的完成状态,每次任意一个拍照成功后,都校验两个标记位是否都为真即可判断是否全部完成拍照。

具体修改步骤

  • 第一步:在Activity中新增两个成员变量,默认值为false,分别对应两个按钮的拍照完成状态
ImageView imageV, imageV2;
Button btn1, btn2;
static final int IMAGE_REQUEST = 1;
static final int IMAGE_REQUEST_2 = 2;
private static final int PERMISSION_REQUEST = 2;
// 新增状态标记
private boolean isBtn1Captured = false;
private boolean isBtn2Captured = false;
  • 第二步:修正onActivityResult逻辑,移除无效的多请求码判断,每次拍照成功后更新对应标记,再校验是否全部完成
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == IMAGE_REQUEST) {
        if (resultCode == Activity.RESULT_OK) {
            imageV.setImageResource(R.drawable.image_view_2do);
            isBtn1Captured = true;
        }
    } else if (requestCode == IMAGE_REQUEST_2) {
        if (resultCode == Activity.RESULT_OK) {
            imageV2.setImageResource(R.drawable.image_view2_2do);
            isBtn2Captured = true;
        }
    }
    // 双拍照完成校验逻辑
    if (isBtn1Captured && isBtn2Captured) {
        // 此处编写两个都完成拍照后要执行的业务逻辑,比如弹提示、提交数据、跳转页面等
        Toast.makeText(this, "两个拍照任务均已完成", Toast.LENGTH_SHORT).show();
    }
}
  • 可选优化:如果允许用户重复点击按钮重新拍照,可以在点击按钮跳转相机时重置对应标记位,避免旧状态干扰判断
btn1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
       isBtn1Captured = false; // 重置第一个拍照的状态
       Intent camara = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
       if (camara.resolveActivity(getPackageManager()) != null) {
          startActivityForResult(camara, IMAGE_REQUEST);
       }
    }
});

btn2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
       isBtn2Captured = false; // 重置第二个拍照的状态
       Intent camara = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
       if (camara.resolveActivity(getPackageManager()) != null) {
          startActivityForResult(camara, IMAGE_REQUEST_2);
       }
    }
 });

内容的提问来源于stack exchange,提问作者Rick V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:15:03