谈谈自己处理拍照剪裁的一些经验和遇到的问题

   之前有几个项目用到拍照加裁剪,一直做的也不是很成熟,慢慢的做的越来越多,对这方面的也了解的越来越多。直接百度android拍照剪裁相册等内容会给出一些解决方法和代码,但是放在我们实际的项目里边是不能满足不同项目的需求的,最大的问题就是android4.4版本以上和以下的相册选择是不能通用的,再有就是由于不同的机型,rom不同,同样的方法可能在三星的手机上能用,但是在小米上就不好用了,同样的代码,不同的手机上默认的裁剪方法效果也不一定一样,有的效果不能满足需求。下面我将我总结的一些经验和一些解决问题的方法分享给大家。

1. 在清单文件中添加权限

android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

  2.拍照,首先要创建一个存储照片的路径,路径没做好往往拍照完成后跳进裁剪的时候“无法加载图片”,或者系统就崩了然后就是判断是否有内存卡,老点的手机没有内置的内存卡,现在不少手机都有内置内存卡了(系统内存,内置sd卡,外sd卡这边也很容易把人搞晕)。

private void makeDir() {
    //检查手机上是否有外部存储卡
    sdCardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);

    if (!sdCardExist) {
        //如果不存在SD卡,判断文件夹目录是否存在
        path = Uri.parse(Environment
                .getExternalStorageDirectory().getAbsolutePath() + "/xxx/");
        File dirFirstFile = new File(path.getPath());//新建一级主目录
        if (!dirFirstFile.exists()) {//判断文件夹目录是否存在
            dirFirstFile.mkdirs();//如果不存在则创建
        }
    }

}

这段代码是在不存在sd的时候在系统内存中创建的文件夹,如果想在sd中创建的话可以写成

path = Uri.parse("/sdcard//xxx/");

网上很多人说在sd卡上创建文件夹用Environment.getExternalStorageDirectory()方法,这个绝对是复制党干的,它创建的路径实在手机内部存储里边的,跟sd卡完全没有关系,另外就是比如你要创建一个目录是/xxx/yyy/,而不是“/xxx/”,最好一级目录和二级目录分开来创建,理论上是要分开的,但是有的时候一起创建也没有问题,不过还是分开写比较好一些,

3.从相册选的时候要考虑的问题就是4.4版本上下区别对待,我以前写的一篇文章中有介绍方法,

4.裁剪,系统默认就能用,具体太细的也不是很了解,我现在有个问题还没有解决就是,明明之前写的方形的裁剪,到了华为p8手机上,调用的时候就变成圆形的了····,没找到怎么解决,正常的话如果想做圆形的裁剪都是要话费一些时间的,可是现在什么都没做,他居然自己跳出来了。

这就是现在知道的一些,如果哪里有说的不对的,不全面的,欢迎大神来指教!!!



 
  

你可能感兴趣的:(android开发,android,经验,拍照,裁剪,相册)