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
相关产品推荐
相关产品推荐

