2017-9-14 遇到的一点小问题
.
项目里有用到拍照或相册选取照片后上传到服务端,这个网上一搜很多,就是上传前需要压缩,网上找了些都不是很满意,刚好看到crazycodeboy/TakePhoto,觉得还不错,就一直使用。
这次新项目,又用上了。因为单继承而BaseActivity又有些是需要用的。所以继续是用的组装方式来整合。
用的 compile 'com.jph.takephoto:takephoto_library:4.0.3'
,结果刚一进Activity就在takePhoto = (TakePhoto) TakePhotoInvocationHandler.of(this).bind(new TakePhotoImpl(this, this));
时报错,出现JNI ERROR (app bug): local reference table overflow (max=512)。找了很久,没找到原因,只好试一下继承的方式,通过extends TakePhotoActivity
,没想到竟然可以了。只好比对一下相关代码。发现在重写invoke()
方法时,我竟然没改,返回的return null;
改回TakePhotoActivity
里的代码,可以了。。。
@Override
public TPermissionType invoke(InvokeParam invokeParam) {
TPermissionType type=PermissionManager.checkPermission(TContextWrap.of(this),invokeParam.getMethod());
if(TPermissionType.WAIT.equals(type)){
this.invokeParam=invokeParam;
}
return type;
}
之前项目用的版本是4.0.0
,获取路径只有一个getPath();
但现在用的4.0.3
版本,去掉了这个方法,改成getCompressPath();//返回压缩后路径
和getOriginalPath();//返回原始路径
。
试了一下,getCompressPath();
返回的值是空,因为忘了设置压缩了。在getTakePhoto()
时加上
CompressConfig config = new CompressConfig.Builder().setMaxSize(409600).create();//压缩最大尺寸
takePhoto.onEnableCompress(config, false);//设置压缩参数及不显示进度
设置后能正常获取压缩后和原始图片路径了。