相机照片拍摄失败

问题描述:

我已经从我的活动启动相机应用程序下面的代码:相机照片拍摄失败

private Uri imageUri; 
private void takeCameraPhoto() { 
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    File photo = new File(Environment.getExternalStorageDirectory(), "Pic.jpg"); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, 
      Uri.fromFile(photo)); 
    imageUri = Uri.fromFile(photo); 
    startActivityForResult(intent, TAKE_PICTURE); 
} 

当用户拍摄照片并选择它,我,我有我的onActivtyResult方法得到的回调于Android这样写:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case TAKE_PICTURE: 
     if (resultCode == Activity.RESULT_OK) { 
      tempView.setVisibility(View.INVISIBLE); 
      Uri selectedImage = imageUri; 
      getContentResolver().notifyChange(selectedImage, null); 
      ContentResolver cr = getContentResolver(); 

      try { 
       imageBMP = android.provider.MediaStore.Images.Media 
        .getBitmap(cr, selectedImage); 
      } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      int width = getResources().getDisplayMetrics().widthPixels; 
      int height = getResources().getDisplayMetrics().heightPixels; 
      String newFilePath = selectedImage.toString().replace("file:///mnt/", "/"); 


      imageBMP = ShrinkBitmap(newFilePath, width, height); 
      imageView.setImageBitmap(imageBMP); 
      Matrix m1= imageView.getImageMatrix(); 
      RectF drawableRect1 = new RectF(0, 0, imageBMP.getWidth(), imageBMP.getHeight()); 
      RectF viewRect1 = new RectF(0, 0, width - 50, height - 100); 
      m1.setRectToRect(drawableRect1, viewRect1, Matrix.ScaleToFit.CENTER); 
      matrix.set(m1); 
      imageBMP = null; 
      System.gc(); 
      /*Toast.makeText(this, selectedImage.toString(), 
         Toast.LENGTH_LONG).show();*/ 
     }else{ 
      if (!isFromDialog) { 
       PhotoDecorationActivity.this.finish(); 
      } 

     } 

     break; 

搭载Android 4.4版本,我得到的NullPointerException这imageBMP为null,这是因为空newFilePath变量的可能。什么是正确的代码捕捉从相机的图像和接收它在我的activity.Can人帮助我请。

试试这个

//This code is for launching the camera activity 

    Integer cam = 0; 
    Boolean gpicture; 
    Intent action = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
          startActivityForResult(action, cam); 



//This is the code used to handle the request and display it on a bitmap 

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

//process image gotten from gallery 
       if (requestCode == cam && resultCode == Activity.RESULT_OK) { 

        gpicture = true; 

        Uri selectedImage = data.getData(); 
        final String location = data.getDataString(); 

        Bitmap bitmap = null; 

        try { 
         bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedImage)); 
        } catch (FileNotFoundException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
        pic.setImageBitmap(bitmap); 
} 
    } 

该代码只是用来从相机获得的图像和位图显示它,希望它可以帮助你

+0

是什么Add_customer.RESULT_OK – Sandeep 2014-09-10 10:49:06

+0

对不起它的Activity.RESULT_OK ....我现在编辑我的答案...您也可以使用您的活动名称 – danidee 2014-09-10 10:58:23