是否可以在不保存电话的情况下捕获图像并将其显示在imageview上?最好是从API级别18开始工作。目前,我的代码是
private void ImageSelection()
{
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, IMAGE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == IMAGE_REQUEST && resultCode == RESULT_OK && data != null)
{
Uri FilePath = data.getData();
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), FilePath);
mImageView.setImageBitmap(bitmap);
mImageView.setVisibility(View.VISIBLE);
mEditText.setVisibility(View.VISIBLE);
} catch (IOException e) {
e.printStackTrace();
}
}
if (TextUtils.isEmpty(mEditText.getText())){
mEditText.setError("Must!");
}
}
答案 0 :(得分:1)
使用相机应用拍照
将操作委派给其他应用程序的Android方法是调用描述您要完成的操作的Intent。此过程涉及三部分:
这是一个调用意图以捕获照片的功能。
static final int REQUEST_IMAGE_CAPTURE = 1;
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
请注意,startActivityForResult()方法受到调用resolveActivity()的条件的保护,该条件返回可以处理该意图的第一个活动组件。执行此检查非常重要,因为如果您使用没有应用程序可以处理的意图调用startActivityForResult(),则您的应用程序将崩溃。因此,只要结果不为null,就可以安全地使用意图。
获取缩略图
如果简单的拍照技艺不是您应用程序雄心壮志的最终结果,那么您可能希望从相机应用程序中获取图像并对其进行处理。
Android Camera应用程序将传递给onActivityResult()的返回Intent中的照片编码为附加内容中的小Bitmap,位于键“数据”下。以下代码检索此图像并将其显示在ImageView中。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
mImageView.setImageBitmap(imageBitmap);
}
}
Check official documentation以获得更好的理解。
希望这会有所帮助。