安卓 相册和拍照 takephoto的使用 踩过的坑

1 glide 版本冲突

解决方法:

在依赖takephoto库时, 注明排除依赖Glide库即可
具体方法如下:
下面这名依赖语义为: 依赖takephoto4.0.3版本, 并排除依赖Glider库; 下面exclude: ….这句中的com.github.bumptech.glide是依赖Glide的语法, 不是随便拼出来的.
换句话说, 如果您需要排除依赖哪个库,就这个地方换成对应库的依赖链接, 不用加版本号和名称.

compile('com.jph.takephoto:takephoto_library:4.0.3') {
    exclude group: 'com.github.bumptech.glide'
}
  • 但是4.0.3之后 操作单独有一个类,这样 还是会报错,只能 把自己gradle种的glide版本 降到 3.6.1 或者 升级 takephoto中的grilde版本

2 glide 3.6.1 的使用

Glide 3.6.1使用心得

[Gilde 4.0.3 使用心得]

 RequestOptions options = new RequestOptions()
                            .centerCrop()
                            .placeholder(R.drawable.default_head_img)
                            .error(R.drawable.default_head_img)
                            .priority(Priority.HIGH);

                    Glide.with(mContext).load(imgURL).apply(options).into(headerHolder.headerImage);

3 使用Glide加载、缓存图片、Gif、解决背景出现浅绿色、GlideModules冲突

使用Glide加载、缓存图片、Gif、解决背景出现浅绿色、GlideModules冲突

其他

解决了 还是glide依赖重复的问题,我依赖的一个第三方里面又依赖了glide,在哪Terminal里面输入 gradlew -q :app(你看的Module名)dependence (命令可能不对,我也记不清了。你自己百度一下看看)可以查看当前的引用,有重复的在具体操作 这是我的操作 compile(‘me.iwf.photopicker:PhotoPicker:0.1.8’) {
exclude group: ‘com.github.bumptech.glide’, module: ‘glide’
}

4 takephoto 的使用

  • 首先设置监听方法
implements TakePhoto.TakeResultListener,InvokeListener
  • 然后初始化
getTakePhoto().onCreate(savedInstanceState);

public TakePhoto getTakePhoto(){
        if (takePhoto==null){
            takePhoto= (TakePhoto) TakePhotoInvocationHandler.of(this).bind(new TakePhotoImpl(this,this));
        }
        return takePhoto;
    }
  • 设置监听方法
@Override
    protected void onSaveInstanceState(Bundle outState) {
        getTakePhoto().onSaveInstanceState(outState);
        super.onSaveInstanceState(outState);
    }
@Override
    public void takeSuccess(TResult result) {
        L.e("takeSuccess:" + result.getImage().getCompressPath());
        photoPath = result.getImage().getCompressPath();
        //上传图片
        requestUpLoadIamge(compressImgPath(photoPath));
    }
    @Override
    public void takeFail(TResult result,String msg) {
        L.e("takeFail:" + msg);
        promptInformation("拍照或相册失败,请重试");
    }
    @Override
    public void takeCancel() {
        L.e(getResources().getString(R.string.msg_operation_canceled));
    }

    @Override
    public PermissionManager.TPermissionType invoke(InvokeParam invokeParam) {
        PermissionManager.TPermissionType type=PermissionManager.checkPermission(TContextWrap.of(this),invokeParam.getMethod());
        if(PermissionManager.TPermissionType.WAIT.equals(type)){
            this.invokeParam=invokeParam;
        }
        return type;
    }

你可能感兴趣的:(android)