是否有可能做到这一点?从选择图像到拍摄图像
Is it possible to do this? From selecting image to capturing image
是否可以在不保存 phone 的情况下捕获图像并在 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!");
}
}
用相机应用拍照
将操作委派给其他应用程序的 Android 方法是调用描述您想要完成的操作的 Intent。这个过程涉及三个部分:
- 意图本身
- 一个启动外部的调用Activity
- 当焦点 return 到您的 activity
时处理图像数据的一些代码
这是一个调用 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() 的条件保护,return是第一个 activity 组件可以处理意图。执行此检查很重要,因为如果您使用任何应用都无法处理的意图调用 startActivityForResult(),您的应用将会崩溃。所以只要结果不为空,就可以安全地使用意图。
获取缩略图
如果简单的拍照功能不是您应用的终极目标,那么您可能希望从相机应用程序中取回图像并对其进行处理。
Android 相机应用程序将 return 发送到 onActivityResult() 的 Intent 中的照片编码为 extras 中的小位图,在键 [=43= 下].以下代码检索此图像并将其显示在 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 以获得更好的理解。
希望对您有所帮助。
是否可以在不保存 phone 的情况下捕获图像并在 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!");
}
}
用相机应用拍照
将操作委派给其他应用程序的 Android 方法是调用描述您想要完成的操作的 Intent。这个过程涉及三个部分:
- 意图本身
- 一个启动外部的调用Activity
- 当焦点 return 到您的 activity 时处理图像数据的一些代码
这是一个调用 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() 的条件保护,return是第一个 activity 组件可以处理意图。执行此检查很重要,因为如果您使用任何应用都无法处理的意图调用 startActivityForResult(),您的应用将会崩溃。所以只要结果不为空,就可以安全地使用意图。
获取缩略图
如果简单的拍照功能不是您应用的终极目标,那么您可能希望从相机应用程序中取回图像并对其进行处理。
Android 相机应用程序将 return 发送到 onActivityResult() 的 Intent 中的照片编码为 extras 中的小位图,在键 [=43= 下].以下代码检索此图像并将其显示在 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 以获得更好的理解。
希望对您有所帮助。