出现的问题:

1.在选取照片进行裁剪后点击确定时,自动退出了程序。

2.在调用相机拍摄时,无法点击确定,就是无法进入裁剪界面。

我的代码如下:

`public class MainActivity extends Activity implements OnClickListener {

private Button camera;

private Button gallery;

private ImageView iv;

private File tempFile = new File(Environment.getDataDirectory(),

getPhotoFileName());

/**

* 调用相机

*/

private final int TOCAMERA = 1;

/**

* 调用相册

*/

private final int TOGALLERY = 2;

/**

* 调用裁剪

*/

private final int TOCROP = 3;

private static final String IMAGE_UNSPECIFIED = "image/*";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

camera = (Button) findViewById(R.id.camera);

gallery = (Button) findViewById(R.id.gallery);

iv = (ImageView) findViewById(R.id.iv);

camera.setOnClickListener(this);

gallery.setOnClickListener(this);

}

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()) {

case R.id.camera:

Intent intent0 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

if (!tempFile.exists()) {

tempFile.getParentFile().mkdirs();

}

System.out.println(tempFile.getAbsolutePath());

intent0.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));

startActivityForResult(intent0, TOCAMERA);

break;

case R.id.gallery:

Intent intent1 = new Intent(Intent.ACTION_PICK, null);

intent1.setDataAndType(

MediaStore.Images.Media.INTERNAL_CONTENT_URI,

IMAGE_UNSPECIFIED);

startActivityForResult(intent1, TOGALLERY);

break;

default:

break;

}

}

public void startPhotoZoom(Uri uri) {

Intent intent = new Intent("com.android.camera.action.CROP");// 调用Android系统自带的一个图片剪裁页面,

intent.setDataAndType(uri, IMAGE_UNSPECIFIED);

intent.putExtra("crop", "true");// 进行修剪

// aspectX aspectY 是宽高的比例

intent.putExtra("aspectX", 1);

intent.putExtra("aspectY", 1);

// outputX outputY 是裁剪图片宽高

intent.putExtra("outputX", 300);

intent.putExtra("outputY", 500);

intent.putExtra("return-data", true);

startActivityForResult(intent, TOCROP);

}

@Override

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

// TODO Auto-generated method stub

if (data == null) {

return;

}

switch (requestCode) {

case TOGALLERY:

startPhotoZoom(data.getData());

break;

case TOCROP:

Uri originalUri = data.getData();

if (originalUri == null) {

return;

}

Bitmap bm = Utils.getBitpMap(this, originalUri);

iv.setImageBitmap(bm);

break;

case TOCAMERA:

// 设置文件保存的路径

startPhotoZoom(Uri.fromFile(tempFile));

break;

default:

break;

}

super.onActivityResult(requestCode, resultCode, data);

}

private String getPhotoFileName() {

Date date = new Date(System.currentTimeMillis());

SimpleDateFormat dateFormat = new SimpleDateFormat(

"'IMG'_yyyyMMdd_HHmmss");

return dateFormat.format(date) + ".jpg";

}

}

`

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐