在保存第二张照片拍摄的照片时面对“致命错误”;第一次拍照和图片保存效果很好

时间:2014-10-05 10:23:13

标签: bitmap camera image-capture

我尝试编写应用程序来拍摄照片,将照片保存在我想要的目录中,并使用我想要的名称,然后将照片位图放在ImageReview上。 我可以在第一次拍照,照片保存,照片位图和将图像放置在Image Review上。当我第二次尝试重做时,我仍然可以启动相机并拍照,但是在保存照片时,我面临着消息问题"不幸的是,XXXXXX已停止"。需要帮助解决这个问题。感谢。

我怀疑导致此问题的命令如下所示,因为当我注释掉此命令行时,我在第二次保存照片时不会遇到此问题:  cameraBox1.setImageBitmap(captureBmp);

我是否需要添加任何内容来管理它?

以下是我的编码:

  takeButton1.setOnClickListener(new OnClickListener() {
           @Override
           public void onClick(View v) {
              image = getFile(MainActivity.this);
            Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
             i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image) );   
            startActivityForResult(i, CAPTURE_IMAGE_CAPTURE_CODE);
           }
          });

public File getFile(Context context){  

      final File path = new File( Environment.getExternalStorageDirectory(), "My Image" );  
      if(!path.exists()){  
        path.mkdir(); 
      }
      String name;
      int n = 100000;
      int rand;
      rand = new Random().nextInt(n);
      name = "Image-" + rand + ".jpg";
      File fileimage = new File(path, name);

      return fileimage;  
    }  

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (resultCode == RESULT_OK){
       Toast.makeText(this, "Image Captured", Toast.LENGTH_LONG).show();
       switch(requestCode){  
       case CAPTURE_IMAGE_CAPTURE_CODE:  

        try {  
          Bitmap captureBmp;
          captureBmp = Media.getBitmap(getContentResolver(), Uri.fromFile(image) );

          ImageUri = Uri.fromFile(image);
          String pathToImage = ImageUri.getPath();
          cameraBox1 = (ImageView) findViewById(R.id.cameraBox);

          cameraBox1.setImageBitmap(captureBmp);

        } catch (FileNotFoundException e) {  
          e.printStackTrace();  
        } catch (IOException e) {  
          e.printStackTrace();  
        } 
      cameraBox1.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
      cameraBox1.setAdjustViewBounds(true);

      break;
      }
   } 
   else if (resultCode == RESULT_CANCELED) {
       Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
   }

 }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
}

我使用的API:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.provider.MediaStore.Images.Media;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.annotation.SuppressLint;

0 个答案:

没有答案