public class AvatarMananger {    private String AVATAR_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + "xd";    public static final int AVATER_PIC = 1001;    public static final int AVATER_ALBUM = 1002;    public static final int AVATER_CROPE = 1003;    private static AvatarMananger instance;    private static Activity act;    public static Uri lastUri;    private AvatarMananger() {        deleterFile();        newDirectory();    }    private void newDirectory() {        File file = new File(AVATAR_PATH);        if (!file.exists()) {            file.mkdir();        }    }    public static AvatarMananger newInstance(Activity activity) {        act = activity;        if (null == instance)            instance = new AvatarMananger();        return instance;    }    /**     * 打开图库     */    public void openAlbum() {        Intent intent = new Intent(Intent.ACTION_PICK,                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);        act.startActivityForResult(intent, AVATER_ALBUM);    }    /**     * 拍照     */    public void takePic() {        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);        lastUri = Uri.fromFile(new File(AVATAR_PATH + "/" + System.currentTimeMillis() + ".jpg"));        intent.putExtra(MediaStore.EXTRA_OUTPUT, lastUri);        act.startActivityForResult(intent, AVATER_PIC);    }    /**     * 裁剪     */    public void cropePic(Uri uri, int outputX, int outputY) {        Intent intent = new Intent("com.android.camera.action.CROP");        intent.setDataAndType(uri, "image/*");        intent.putExtra("crop", "true");        intent.putExtra("aspectX", 1);        intent.putExtra("aspectY", 1);        intent.putExtra("outputX", outputX);        intent.putExtra("outputY", outputY);        intent.putExtra("scale", true);//黑边        intent.putExtra("scaleUpIfNeeded", true);//黑边        intent.putExtra("return-data", false);        lastUri = Uri.fromFile(new File(AVATAR_PATH + "/" + System.currentTimeMillis() + ".jpg"));        intent.putExtra(MediaStore.EXTRA_OUTPUT, lastUri);        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());        intent.putExtra("noFaceDetection", true); // no face detection        act.startActivityForResult(intent, AVATER_CROPE);    }    private void deleterFile() {        FileUtils.deleteDir(AVATAR_PATH);    }    public static Uri getLastUri() {        return lastUri;    }

包含相册,拍照,裁剪等功能,回调在使用Activity的onActivityResult中。

    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (resultCode == RESULT_OK)            switch (requestCode) {                case AvatarMananger.AVATER_ALBUM://                    ivShow.setImageURI(data.getData());                    AvatarMananger.newInstance(TestActivity.this).cropePic(data.getData(), 200, 200);                    break;                case AvatarMananger.AVATER_PIC://                    ivShow.setImageURI(AvatarMananger.newInstance(TestActivity.this).getLastUri());                    AvatarMananger.newInstance(TestActivity.this).cropePic(AvatarMananger.newInstance(TestActivity.this).getLastUri(), 200, 200);                    break;                case AvatarMananger.AVATER_CROPE:                    ivShow.setImageURI(AvatarMananger.newInstance(TestActivity.this).getLastUri());                    break;            }    }

更多相关文章

  1. Android之使用摄像头拍照
  2. 【翻译】(14)Stable APIs
  3. 四十七、实现调用Android手机的拍照功能
  4. android 更新ADT之后 报java.lang.NoClassDefFound
  5. 解决Glide4.0和圆角裁剪CenterCrop冲突
  6. Android(安卓)相机或者相册上传头像
  7. Android(安卓)WebView文件上传(关键代码)
  8. android 调用摄像头
  9. Android调用系统相机拍照并保存到指定位置

随机推荐

  1. ch02 Android TextView与EditView
  2. android studio更新到1.5后遇到的问题
  3. android实现调用系统音乐播放器
  4. android 两点缩放字体
  5. 九宫格
  6. Android 2D绘图总结
  7. android WebView java与js相互调用
  8. EditText对行光标默认第一行问题
  9. Android 中的 R.class,减小 Apk 包大小
  10. Android支持的媒体格式