有人可以解释相机请求代码的内容吗?
为什么我们使用它?
我正在尝试Android中的练习,我看到了代码。
这是我练习的代码;
public class imageActivity extends AppCompatActivity {
Button image;
private static final int CAMERA_REQUEST = 1888;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_resim);
imageView = (ImageView)this.findViewById(R.id.imageView1);
image = (Button) findViewById(R.id.capture);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
}
}
}
答案 0 :(得分:6)
您可以在一个活动中对startActivityForResult()
进行多次调用,这允许不同的Intent
执行不同的操作。使用请求代码来标识您要返回的Intent
。
例如:
您可以为结果开始两项活动:
private static final int CAMERA_REQUEST = 1888;
private static final int GALLERY_REQUEST = 1889;
startActivityForResult(cameraIntent, CAMERA_REQUEST);
startActivityForResult(cameraIntent, GALLERY_REQUEST);
并在您的onActivityForResult()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
//Do stuff with the camara data result
}
else if (requestCode == GALLERY_REQUEST && resultCode == RESULT_OK) {
//Do stuff with the gallery data result
}
}
请注意private static final int
完全是任意的。
答案 1 :(得分:2)
这就是它的含义:
当您启动结果活动时,例如请求相机拍摄您的照片然后将其返回到您的调用活动,您将传递一个唯一的整数值,如100001
或您在该类中尚未使用的任何内容。
因此,简而言之,CAMERA_REQUEST
可以是您在类中定义的任何值,如下所示:
private static final int CAMERA_REQUEST = 10001;
现在,由于您在从相机请求照片时通过了它,您将使用它来检查requestCode
,因为如果它适用于相机本身,则必须匹配它。
我希望这有助于你理解。
答案 2 :(得分:1)
只是在收到RESPONSE时检测/确认REQUEST,我们使用CAMERA_REQUEST。
答案 3 :(得分:1)
用于接收相机意图结果
if (requestCode == CAMERA_REQUEST) {
if (resultCode == RESULT_OK) {
// Image captured and saved to fileUri specified in the Intent
} else if (resultCode == RESULT_CANCELED) {
// User cancelled the image capture
} else {
// Image capture failed, advise user
}
}
答案 4 :(得分:1)
onActivityResult()
可以处理多个调用,例如,如果您启动意图从图库中选择图像,则其结果也会在onActivityResult()
中收到。
因此,为了检测我们得到的结果,我们添加一个标识符,说明我们使用CAMERA_REQUEST
的原因。希望你明白。
答案 5 :(得分:1)
如果您询问CAMERA_REQUEST的原因,那么您可以将其视为您提供的任意跟踪值,并在调用startActivityForResult时返回结果。
文档说明了这个,
requestCode int: If >= 0, this code will be returned in onActivityResult() when the activity exits.