java - 在 Android 中拍照后验证按钮
问题描述
在 Android 中拍照后的按钮验证。在我的活动中,我实现了两个带有默认图像的图像视图(图像视图 1 和图像视图 2)和两个打开设备相机的按钮(按钮 1 和按钮 2),当从按钮拍摄照片时,完成验证以更改图像视图图像(按钮 1 -> imageview1,button2 -> imageview2)。
我想进行第三次验证,验证照片是否已从两个按钮中获取。
如何验证两个按钮上的照片何时已拍摄?
这是我的代码
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;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageV = findViewById(R.id.image_view);
imageV2 = findViewById(R.id.image_view_2);
btn1= findViewById(R.id.button_1);
btn2= findViewById(R.id.button_2);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
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) {
Intent camara = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (camara.resolveActivity(getPackageManager()) != null) {
startActivityForResult(camara, IMAGE_REQUEST_2);
}
}
});
}
@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);
}
else if (requestCode == IMAGE_REQUEST_2) {
if (resultCode == Activity.RESULT_OK) {
imageV2.setImageResource(R.drawable.image_view2_2do);
}
}
// This is where the code fails me
//how can I validate if the photos are already taken on the two buttons?
else if (requestCode == IMAGE_REQUEST && requestCode == IMAGE_REQUEST_2) {
if (resultCode == Activity.RESULT_OK) {
imageV.setImageResource(R.drawable.image_view_2do);
imageV2.setImageResource(R.drawable.image_view2_2do);
}
}
}
}
解决方案
我注意到您正在将 requestCode 的值与IMAGE_REQUEST
和 next 进行比较IMAGE_REQUEST_2
。
之后,在代码中断的部分中,您将在一行中比较两者。但是我相信这永远不会起作用,因为 requestCode 只有一个值,并且您将它与两个不同的值进行比较 [IMAGE_REQUEST, IMAGE_REQUEST_2]
我建议您每次使用该按钮拍照时将 IMAGE_REQUEST_2 和 IMAGE_REQUEST 添加到数组中。
然后比较两个值是否存在于该数组中,如果是,你就做你想做的事。
像那样:
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;
// creates a new list to store the photos taken
List<int> requestsMade = new ArrayList<int>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageV = findViewById(R.id.image_view);
imageV2 = findViewById(R.id.image_view_2);
btn1= findViewById(R.id.button_1);
btn2= findViewById(R.id.button_2);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
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) {
Intent camara = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (camara.resolveActivity(getPackageManager()) != null) {
startActivityForResult(camara, IMAGE_REQUEST_2);
}
}
});
@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);
// first photo taken
requestsMade.add(IMAGE_REQUEST);
}
else if (requestCode == IMAGE_REQUEST_2) {
if (resultCode == Activity.RESULT_OK) {
imageV2.setImageResource(R.drawable.image_view2_2do);
requestsMade.add(IMAGE_REQUEST_2);
// second photo taken
}
}
// now this compares if both are taken
else if (requestsMade.contains(IMAGE_REQUEST) && requestsMade.contains(IMAGE_REQUEST_2)) {
if (resultCode == Activity.RESULT_OK) {
imageV.setImageResource(R.drawable.image_view_2do);
imageV2.setImageResource(R.drawable.image_view2_2do);
}
}
}
}
推荐阅读
- python - 用Python中的字符串提取数据框中的最后一个数字
- javascript - 如何使用 JS 显示和隐藏我的响应式汉堡菜单
- python - 从以键为索引的字典列表中创建 DataFrame
- c++ - 当作为部分而不是作为单个函数完成时,常量表达式有效
- swift - Firebase tableview没有填充,Swift
- android - 带拇指的自定义搜索栏
- html - 我们可以在 AMP 中跟踪 html 标签的可见性吗?
- android - 无需扫描整个集合即可共享 Firestore 文档
- ant - 问题:创建任务或类型秒表失败原因:名称未定义
- excel - 在从另一个循环派生的循环中打印某些内容时遇到问题