[关闭]
@yeahugo 2019-01-21T06:31:32.000000Z 字数 2309 阅读 605

1.SDK集成介绍

1.1.android SDK介绍及导入

1.1.1. android SDK介绍

SDK是T1Plus-Android的简写,作用是为用户提供一套完善的生成水印视图、控制水印视图的显示和隐藏以及销毁水印视图的功能。
生成水印图的SDK不通版本支持不同的生成规则,下面会介绍具体使用方法。

1.1.2. 集成android SDK

在您阅读此文档时,我们假定您已经具备了基础的android应用开发经验,并能理解相关的基础概念,SDK支持android4.4及以上的android版本。
导入SDK
将SDK放入项目libs包下

配置build文件

  1. repositories {
  2. flatDir {
  3. dirs 'libs'
  4. }
  5. }
  1. implementation(name: 'screenhunter-release-1.0', ext: 'aar')

配置权限文件

  1. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  3. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  4. <uses-permission android:name="android.permission.INTERNET"/>
  5. <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
  6. <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
  7. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  8. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

2.基本功能

接口总览
SDK在使用前必须得申请如下的权限:

  1. Manifest.permission.READ_PHONE_STATE,
  2. Manifest.permission.ACCESS_NETWORK_STATE,
  3. Manifest.permission.WRITE_EXTERNAL_STORAGE

SDK总共有四个接口,具体接口及功能如下

2.1. 初始化水印视图

FloatWindow.initShadow(host, port, traceOriginId, mContext);
用来初始化水印,全局只用初始化一次,具体调用如下

  1. int initStatus = FloatWindow.initShadow(host, port, traceOriginId, this);

2.2.显示水印视图

  1. FloatWindow.showShadow(mContext);

用户无需判断水印视图是否存在,调用此接口只会显示一层水印视图。建议在baseActivity的onResume()方法中调用,每隔两分钟调用一次。具体如下

  1. @Override
  2. protected void onResume() {
  3. super.onResume();
  4. showThisShaow(this);
  5. }
  6. protected void showThisShaow(Activity context) {
  7. if (timer == null) {
  8. timer = new Timer();
  9. }
  10. if (task == null) {
  11. task = new TimerTask() {
  12. @Override
  13. public void run() {
  14. context.runOnUiThread(() -> {
  15. int result = FloatWindow.showShadow(context);
  16. dealResult(result);
  17. });
  18. }
  19. };
  20. }
  21. timer.schedule(task, 0, 120000);//为了更方便得到精确的数据,应该每两分钟刷新一下

2.3.隐藏水印视图

  1. FloatWindow.hideShadow()

用户无需判断水印是否隐藏,调用此接口即可影藏水印视图。建议在baseActivity的onStop中调用,调用前需要判断是否是在前台。具体如下

  1. protected void hideThisShadow() {
  2. if (timer != null) {
  3. timer.cancel();
  4. timer.purge();
  5. timer = null;
  6. }
  7. if (task != null) {
  8. task.cancel();
  9. task = null;
  10. }
  11. FloatWindow.hideShadow();
  12. }

2.4. 销毁水印视图

  1. FloatWindow.closeShadow(mContext)

用户重新初始化SDK生成水印视图前调用销毁接口,避免反复初始化导致内存消耗增长。该接口一定要确保在MainActivity(该activity结束的时候,退出整个应用,且该activity的launchMode一定要为singleTask)的onDestroy方法中调用,具体如下

  1. @Override
  2. protected void onDestroy() {
  3. super.onDestroy();
  4. //关闭窗口
  5. FloatWindow.closeShadow(this);//在退出当前应用的时候调用,一定要保证当前类在全局只有一个页面栈,用singleTask标记
  6. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注