我有一个问题,关于如何使用相机意图(或相机API)拍摄图像,然后将图像带入imageView以供在我的应用程序中显示。这是我目前的代码。
我设置了一个按钮
Button btnPicture = (Button) findViewById(R.id.btn_picture);
btnPicture.setOnClickListener(this);
我设置了一个Camera方法。
private void Camera() {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE_CODE);
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, REQUEST_CODE);
}
我在这里遇到了问题,我正在尝试处理我拍摄的图像。
private void processImage(Intent intent) {
setContentView(R.layout.imagelayout);
ImageView imageView = (ImageView)findViewById(R.id.image_view);
cameraBitmap = (Bitmap)intent.getExtras().get("data");
imageView.setImageBitmap(cameraBitmap);
}
我的意图是在image_view内显示您拍摄的图像。我没有收到错误信息,也没有发生任何事情。当我拍照时,我被要求再拍一张照片,或者使用设备返回按钮后应用程序强制关闭。似乎我完全离开了我的应用程序,而返回是一个大问题。有什么建议吗?我错过了什么吗?
哦对了,这是我的onActivityResult。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(TAKE_PICTURE_CODE == requestCode) {
Bundle extras = data.getExtras();
if (extras.containsKey("data")) {
Bitmap bmp = (Bitmap) extras.get("data");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] image = baos.toByteArray();
if (image != null) {
Log.d(TAG, "image != null");
}
} else {
Toast.makeText(getBaseContext(), "Fail to capture image", Toast.LENGTH_LONG).show();
}
}
}
我试图将图片放在getExtras中,然后将其存储到ByteArray中。这是我尝试做的另一件事情。不确定它们如何联系在一起。
onActivityResult()
代码。 - Amulya KhareonActivityResult(..)
,并且有简洁的onRequestPermissionsResult(..)
实现。在这个问题的[100+行]答案的SO海洋中,特别感谢:https://dev59.com/yqHia4cB1Zd3GeqPSFcL#43707269 - Gene Bo