我尝试编写应用程序来拍摄照片,将照片保存在我想要的目录中,并使用我想要的名称,然后将照片位图放在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;