一个简单的拍照 DEMO ,拍完照,跳转到系统裁剪界面,裁剪保存完毕后,并显示。
求大神指点!!!(抓狂中...)
但是,我在 SD 卡目录下,发现该文件output_image.jpg 是 0 字节。
运行环境是 SDK : 23 、安卓 6.0
权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
变量: private Uri imageUri;
主要逻辑代码如下:
//跳转到拍照,逻辑代码如下:
takePhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
File outputImage = new File(Environment.getExternalStorageDirectory(), "output_image.jpg");
try {
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
imageUri = Uri.fromFile(outputImage);
Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
i.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(i, TAKE_PHOTO);
}
});
//回调函数,先是拍完照后,返回 TAKE_PHOTO 。
//然后再跳转到裁剪界面,返回 CROP_PHOTO ,并显示图片
switch (requestCode) {
case TAKE_PHOTO:
if (resultCode == RESULT_OK) {
Intent i = new Intent("com.android.camera.action.CROP");
i.setDataAndType(imageUri, "image/*");
i.putExtra("scale", true);
i.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(i, CROP_PHOTO);
}
break;
case CROP_PHOTO:
if (resultCode == RESULT_OK) {
try {
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
photo.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
break;
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.