一、调用拍照界面
1、创建File对象,用来放照出来的照片。
File outputImage = new File (getExternalCacheDir (), "output_image.jpg");
2、判断该照片的物理对象是否已经存在,如果存在,则将它删除,并创建出该文件的物理对象。
try {
if (outputImage.exists ()) {
outputImage.delete ();
}
outputImage.createNewFile ();
} catch (IOException e) {
e.printStackTrace ();
}
3、创建意图跳转拍照界面。
Intent intent = new Intent ("android.media.action.IMAGE_CAPTURE");
intent.putExtra (MediaStore.EXTRA_OUTPUT, outputImage);
startActivityForResult (intent, REQUEST_CODE_TAKE_PHOTO);
4、将拍到的照片显示出来。
case REQUEST_CODE_TAKE_PHOTO:
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras ();
Bitmap bt = (Bitmap) bundle.get ("data");
if(bt!=null){
Log.d ("ysy","bitmap not is null!");
picture.setImageBitmap (bt);
}else{
Log.d ("ysy","bitmap is null");
}
}
break;
二、从相册选择一张照片显示出来
1、检查应用是否有读写SD卡的权限。
ContextCompat.checkSelfPermission (MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED
2、如果没有先申请权限。
ActivityCompat.requestPermissions (MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
3、申请到权限,创建意图,打开相册。
Intent intent = new Intent ("android.intent.action.GET_CONTENT");
intent.setType ("image/*");
startActivityForResult (intent,REQUEST_CODE_CHOOSE_PICTURE);
4、从Intent对象中拿到相片的路径数据。
Uri uri = data.getData ();
String imagePath = getImagePath (uri, null);
5、加载成Bitmap对象,显示出来。
Bitmap bitmap = BitmapFactory.decodeFile (imagePath);
picture.setImageBitmap (bitmap);