捕获的图像不会显示在ImageView

时间:2015-12-09 10:47:25

标签: android camera imageview capture

在我的活动A中,有一个ImageView和一个Button。单击该按钮后,它将转到activeTakePhoto()。 imgUri显示但我的ImageView中没有显示任何内容。

 private void activeTakePhoto() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            String fileName = "temp.jpg";
            ContentValues values = new ContentValues();
            values.put(MediaStore.Images.Media.TITLE, fileName);
            mCapturedImageURI = getContentResolver()
                    .insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            values);
            takePictureIntent
                    .putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
    }

 @Override
  protected void onActivityResult(int requestCode, int resultCode,
                                              Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case RESULT_LOAD_IMAGE:
                if (requestCode == RESULT_LOAD_IMAGE &&
                        resultCode == RESULT_OK && null != data) {
                    Uri selectedImage = data.getData();
                    String[] filePathColumn = {MediaStore.Images.Media.DATA};
                    Cursor cursor = getContentResolver()
                            .query(selectedImage, filePathColumn, null, null,
                                    null);
                    cursor.moveToFirst();
                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                    String picturePath = cursor.getString(columnIndex);
                    cursor.close();
                }
            case REQUEST_IMAGE_CAPTURE:
                if (requestCode == REQUEST_IMAGE_CAPTURE &&
                        resultCode == RESULT_OK) {
                    File picture = new File(Environment.getExternalStorageDirectory() + "/temp.jpg");
                    ImageView imgView=(ImageView)findViewById(R.id.imageView);
                    Uri imgUri=Uri.fromFile(picture);
                    imgView.setImageURI(imgUri);
                    Toast.makeText(getApplication(),imgUri+"",Toast.LENGTH_LONG).show();
                }
        }
    }

2 个答案:

答案 0 :(得分:1)

您可以尝试使用此代码,它可能有所帮助:

@Override
public void onClick(View v) {

    if (v == imgCamera) {

        Toast.makeText(getApplicationContext(), "open camera", Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, CAMERA_REQUEST);
    }
}//on click

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

    super.onActivityResult(requestCode, resultCode, data);
    Log.e("RESULT CODE", "--" + resultCode);
    if (resultCode == RESULT_OK) {

        Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes);

        //to generate random file name
         String fileName = "tempimg.jpg";

        try {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            //captured image set in imageview
            imageView.setImageBitmap(photo);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

答案 1 :(得分:0)

在activeTakePhoto中

替换

String fileName = "temp.jpg"; 

fileName=Environment.getExternalStorageDirectory().getAbsolutePath() + "/temp.jpg"