二、SDK方法说明

**SDK方法说明** 详细的引用方式可以参照demo的源码项目 2.1引入插件 使用继承的方式引入Activity,如下所示 ``` public class HqDemoActivity extends SignVerticalViewActivity{ ............ } ``` 说明: SignVerticalViewActivity:为好签定义控件,用户调用时需继承该activity 2.2添加SDK布局定义文件的设置 使用include标签,在工程的布局文件中引入好签布局定义 示例如下: ``` <include android:id="@+id/rl_root_hq" android:layout_height="match_parent" android:layout_width="match_parent" layout="@layout/activity_sign_vertical_view"/> ``` 2.3需实现方法 **①initFileProvider()** 作用:初始化FileProvider ``` WellSign.setHQFileProvider("Your FileProvider"); ``` **②closeHQFile()** 作用:关闭本页面,给好签插件调用 示例代码: ``` @Override protected void closeHQFile() { super.closeHQFile(); } ``` **③initContentView(Bundle savedInstanceState)** 作用:设置用户的布局文件 示例代码: ``` @Override protected void initContentView(Bundle savedInstanceState) { setHqContentView(R.layout.activity_hq_demo_vertical); } ``` **④onActivityResult** 如果自己的acitvity中要实现该方法,请在onActivityResult 方法中,加入 ``` super.onActivityResult(); ``` **⑤继承SignVerticalViewActivity 的类如实现一下方法 需执行执行super方法** ``` @Override protected void onHqDestroy() { super.onHqDestroy(); } @Override public void onDestroy() { super.onDestroy(); } ``` **⑥设置固化时的回调,success为true时,固化成功(error为0表示有数据固化,为1 无数据固化);success为false时,固化失败。** ``` setHQCallBack(new SignVerticalCallBack() { @Override public void signOut(boolean success, int error) { Log.e("success", "success" + success + " " + error); closeHQFile();//关闭文件 } }); ``` **⑦初始化好签授权** 在APP初始化的时候调用一次即可(一般在APPContext类或MainActivity类调用) ``` ReturnResult result = WellSign.initializeSNKey(context,sn, key); ``` 参数说明: |参数名称| 参数类型 |说明| |-|-|-| |context |Context |安卓类android.content.Context| |sn |String |好签提供授权码| |key |String |好签提供密钥| 返回值说明: ReturnResult好签定义返回类,包含属性returnCode和returnMessage,可以获取到初始化后返回的code和message,据此判断初始化成功还是失败。 |Code值 |类型 |定义| |-|-|-| |0 |int| 初始化成功| |-1 |int| 授权信息为空或授权日期错误| |-2 |int| 模块名称错误| |-3 |int| 用户名错误| |-4 |int| 包名校验错误| |-5 |int| 解析数据错误| |-6 |int| OEM授权码错误| |-7 |int| APP名校验错误| |-8 |int| 设备平台不符| **⑧指定文本对象字体** 在部分机型中,展示文本与保存后的文本字体不一致,导致保存后的pdf文本对象发生偏移错位,可以使用该方法强行指定保存字体样式。 ``` WellSign.setHQEREBCharacterStylePath("/system/fonts/HarmonyOSHans.ttf"); ``` 由于安卓的默认显示字体由设备/system/etc/fonts.xml 文件配置指定,各设备厂商字体库都不相同。 例如: vivo设备字体库:/system/fonts/VivoFont.ttf; 华为鸿蒙:/system/fonts/HarmonyOSHans.ttf。 ...... 调用者可根据设备型号,自行指定文本字体 2.4SDK公开方法 |方法名| 说明| |-|-| |setHQPenType(int type)|设置笔类型 type:1 手写模式 type:2 擦除模式 type:3 浏览模式| |setHQPenColor(int color)|设置手写笔颜色 color:0 黑色 1:灰色 2:红色 3:蓝色 4:紫色 5:绿色 6:橙色| |setHQPenThikcness(int thikcness)|设置手写笔粗细 thikcness:0-7 依次变粗| |activateHQCustomMode()|自定义模式,开启之后隐藏好签原生界面,只显示PDF界面| |enterHQScrawlMode()|进入涂鸦模式| |exitHQScrawlMode()|离开涂鸦模式| |openHQScrawlSettingPanel(View view) |涂鸦模式下,唤起设置笔迹颜色及粗细界面view:调起面板的控件,用于确定设置面板的显示位置| |closeHQScrawlSettingPanel() |涂鸦模式下,关闭笔迹粗细设置界面| |clearHQCurrentPageScrawlWithDialog() |清除当前页涂鸦笔迹(有弹窗)| |clearHQCurrentPageWrite() |清除当前页涂鸦笔迹| |clearHQAllPageWrite()| 清除所有页涂鸦笔迹| |appendHQPage()| 新增一页,追加到最后一页| |openHQFile(String filePath) |打开pdf文件| |closeHQFile()| 关闭当前浏览文件和当前activity| |solidHQFile() |固化笔迹到pdf中| |switchHQFile( String filePath) |切换pdf文件filePath:文件路径| |setHQDefaultUsePen(boolean usePen)|是否默认使用电磁笔(openHQFile方法前调用,只针对第一次使用设置)usePen:true表示默认使用电磁笔,false表示默认不使用| |setHQAutoDetectePen(boolean detectePen)|设置电磁笔输入(openHQFile方法后调用)isPen:true表示只允许电磁笔手写 false表示都可以输入| |setHqContentView(R.layout.activityvertical ,params)|R.layout.activityvertical 布局文params好签内部控件的布局方式| |setHQPageIndexChangedListener(HQPageIndexChangedCallback callback) |设置页码改变回调| |showHQPDFThumbnail() |显示缩略图| |dismissHQPDFThumbnail()|关闭缩略图| |showHQPDFSignInfo() |显示签字历史信息| |haveUnsavedHQData() |是否含有还没保存的信息| |getHQSignInfo() |获取签字历史信息| |setHqSignerInfo() |设置签字人信息| |jumpToPage(int index) |跳转到指定页| |slidePriviousPage() |向上滑动一页| |slideNextPage() |向下滑动一页| |insertHQSign() |插入签字| |insertHQSeal() |插入印章| |insertHQTimestamp(int type, PointF position, SizeF frameSize) |插入日期, type:日期类型 1:"yyyy年MM月dd日 HH:mm:ss" 2:"yyyy年MM月dd日" 3:"yyyy/MM/dd HH:mm:ss" 4:"yyyy/MM/dd" position:相对于屏幕的位置 frameSize:大小 (position和frameSize可以传空 默认放在pdf展示区域的中间)| |insertHQText() |插入文本| |insertHQPicFromAlbum() |从相册插入图片| |insertHQPicFromCamera()|拍照插入图片| |insertHQPicture(Bitmap bitmap, PointF position) |插入图片,bitmap:图片,position:相对于屏幕的位置(传空,默认放在pdf展示区域的中间)| |redo() |笔迹前进| |undo()|笔迹后退| |setHqCanSaveStrokeNum(int num)|设置笔迹点数,当笔迹点数大于该数值时才可以保存| |setHqCanSaveCallBack(SignStrokeCountCallBack callBack)|设置当前笔迹是否可以保存的回调通知,与setHqCanSaveStrokeNum 方法配合使用| |setHQSelfThumbView(LinearLayout infoContentView)|设置用户自定义缩略图显示view,在openHQFile方法前调用(根据参数 LinearLayout 的orientation 属性确定横向还是竖向显示),在用户自定义界面时根据需求调用,view的显示或者隐藏由用户自己控制| |setHQSelfSignInfoView(LinearLayout infoContentView)|设置用户自定义签字信息显示view,在openHQFile方法前调用(根据参数 LinearLayout 的orientation 属性确定横向还是竖向显示),在用户自定义界面时根据需求调用,view的显示或者隐藏由用户自己控制| |insertHQSign(float topLeftx,float topLefty,float defaultHeight,int timestampType,int timestampPosition,float timestampMargin)|插入指定位置的签名对象;topLeftx:指定签名左上角x轴坐标(相对于pdf宽度比例值,取值范围0-1);topLefty:指定签名左上角y轴坐标(相对于pdf高度比例值,取值范围0-1);defaultHeight:签名对象默认高度相对于pdf高度比例值,取值范围0-1);timestampType:时间戳类型(0:不插入时间戳,1:yyyy年MM月dd日 HH:mm:ss,2:yyyy年MM月dd日,3:yyyy/MM/dd HH:mm:ss,4:yyyy/MM/dd);timestampPosition:时间戳插入位置,0:时间戳在签名底部,1:时间戳在签名右侧;timestampMargin:时间戳距离签名位置,单位px(3.1.6版本新增)| |insertHQText(float topLeftx,float topLefty,float defaultWidth,float fontSize,int indentSpaceNum)|插入指定位置的文字对象;topLeftx:指定文字左上角x轴坐标(相对于pdf宽度比例值,取值范围0-1),topLefty:指定文字左上角y轴坐标(相对于pdf高度比例值,取值范围0-1),defaultWidth:文字对象默认宽度(相对于pdf宽度比例值,取值范围0-1),fontSize:文字大小(相对于pdf宽度比例值,应小于defaultWidth值);indentSpaceNum:首行缩进空格数(3.1.6版本新增)| |switchHQReaderTurnPageMode(int mode) |切换阅读模式;WellSign.HQ_READER_TYPE_HORIZONTAL:横向单页翻页,WellSign.HQ_READER_TYPE_VERTICAL:竖向连续翻页| 2.5 工具类 Wellsign类: |方法名| 说明| |-|-| |getPdfPageCount(String pdfPath)|获取PDF总页数,pdfPath:文件路径| |initializeSNKey(Context context,String sn, String key)|初始化好签授权| |setHQFileProvider(String fileProvider)|设置好签fileProvider| |setHQPDFDisplayMargins(int left, int top, int right, int bottom)|设置PDF展示区域到屏幕边缘的间距单位dp| |setPenThickArray(float[] array)|自定义笔迹粗细的值(注意:需在openHQFile方法前设置)| |joinPdf(String targetPdfPath,String fromPdfPath)|合并pdf文件(包含验签信息的合并);targetPdfPath:目标文件,fromPdfPath:源文件| |clearPdfSignInfo(String pdfPath,String pdfPassword)|清除指定文件中的验签信息;pdfPath:目标文件,pdfPassword:文件密码(没有密码时为null值)| |setSignRotateDisable(boolean disable)|控制签名是否可以旋转,true:禁止旋转(旋转按钮不显示),false:可以旋转(默认值,旋转按钮显示)(3.1.5版本新增)| |setTextRotateDisable(boolean disable)|控制文本是否可以旋转,true:禁止旋转(旋转按钮不显示),false:可以旋转(默认值,旋转按钮显示)(3.1.5版本新增)| |setAddSignDefaultPenSize(int penSize)|设置新增签名界面笔迹默认粗细,取值范围0-9(对应粗细1-10),注意:这里只设置默认值,sdk会记录用户上次使用的笔迹粗细 (3.1.5版本新增)| |setSignObjectPositionCallback(SignObjectPositionCallback signObjectPositionCallback)|设置签名保存后的签名对象位置信息回调,接口需实现方法onSignObjectSaved(List<SignObjectPosition> objectPositionList);SignObjectPosition:位置信息数据(signObjectType:签名对象种类,0 签名,1 图片,2 文字,3 圈批,9 时间戳;pageNum:页码,从0开始;topLeftx:签字对象左上角x轴坐标,相对与pdf宽度的百分比值,topLefty:签字对象左上角y轴坐标,相对与pdf高度的百分比值;objectWidth:签字对象宽度,相对与pdf宽度的百分比值;objectHeight:签字对象高度,相对与pdf高度的百分比值)(3.1.6版本新增)| |setTimestampStyle(List< String> timestampStyleList)|设置自定义时间戳样式列表,替代默认的时间戳样式,时间戳样式需要确保符合时间戳格式化规则,timestampStyleList的数据顺序即为显示顺序(3.2.0版本新增)|