Imageview打开相机

44 浏览
0 Comments

Imageview打开相机

我想在图像视图上添加点击事件。点击图像视图时,应该打开一个安卓相机。

ImageView imageView = (ImageView) findViewById(R.id.ImageView1);
imageView.setImageResource(R.drawable.camera);

0
0 Comments

问题出现的原因是当点击ImageView时,会启动相机应用来拍照,并将拍摄的照片显示在ImageView上。然而,在处理返回结果时,代码中使用了错误的键来获取照片数据,导致无法正确地设置图片。

解决方法是修改代码中的键为正确的键,以便正确地获取照片数据并将其设置在ImageView上。

以下是修正后的代码:

imageView = (ImageView) findViewById(R.id.ImageView1);
imageView.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent imageLoader = (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT)
                ? new Intent(MediaStore.ACTION_IMAGE_CAPTURE_SECURE)
                : new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(imageLoader, 1);
    }
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK){
        switch (requestCode) {
            case 1:
                your_image_container_to_set_image.setImageBitmap((Bitmap) data.getExtras().get("data"));  //使用正确的键来获取照片数据并设置在ImageView上
                break;
       }
     }
   }

同时,为了能够读取外部存储中的图片,还需要在AndroidManifest.xml文件中添加读取外部存储的权限:


通过以上修改,问题应该能够得到解决。

0
0 Comments

问题的出现原因:

在点击imageView的时候,调用了takePicture()方法,该方法中通过Intent启动了系统相机应用,并传入了一个文件路径,在拍照完成后,将拍摄的照片保存到该文件路径,并通过setImageURI()方法将照片显示在imageView上。但是在onActivityResult()方法中,无法正确将拍摄的照片设置给imageView。

解决方法:

1. 首先,确保在AndroidManifest.xml文件中添加了相机权限的声明:

2. 确保在布局文件中正确定义了ImageView组件:

android:id="@+id/ImageView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

3. 将代码中的imageView定义为全局变量,在onCreate()方法中初始化:

private ImageView imageView;

4. 修改takePicture()方法,将拍摄的照片保存到指定文件路径:

private Uri file;

public void takePicture(View view) {

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

file = Uri.fromFile(getOutputMediaFile());

intent.putExtra(MediaStore.EXTRA_OUTPUT, file);

startActivityForResult(intent, 100);

}

5. 修改onActivityResult()方法,使用BitmapFactory从文件路径中读取照片,并设置给imageView:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 100) {

if (resultCode == RESULT_OK) {

Bitmap bitmap = BitmapFactory.decodeFile(file.getPath());

imageView.setImageBitmap(bitmap);

}

}

}

6. 最后,确保getOutputMediaFile()方法能够正确创建保存照片的文件路径:

private static File getOutputMediaFile(){

File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(

Environment.DIRECTORY_PICTURES), "CameraDemo");

if (!mediaStorageDir.exists()){

if (!mediaStorageDir.mkdirs()){

return null;

}

}

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());

return new File(mediaStorageDir.getPath() + File.separator + "IMG_"+ timeStamp + ".jpg");

}

通过以上步骤,可以解决ImageView无法显示拍摄照片的问题。

0