@yeahugo
2019-01-21T06:31:32.000000Z
字数 2309
阅读 605
SDK是T1Plus-Android的简写,作用是为用户提供一套完善的生成水印视图、控制水印视图的显示和隐藏以及销毁水印视图的功能。
生成水印图的SDK不通版本支持不同的生成规则,下面会介绍具体使用方法。
在您阅读此文档时,我们假定您已经具备了基础的android应用开发经验,并能理解相关的基础概念,SDK支持android4.4及以上的android版本。
导入SDK
将SDK放入项目libs包下
配置build文件
repositories {
flatDir {
dirs 'libs'
}
}
implementation(name: 'screenhunter-release-1.0', ext: 'aar')
配置权限文件
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
接口总览
SDK在使用前必须得申请如下的权限:
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
SDK总共有四个接口,具体接口及功能如下
FloatWindow.initShadow(host, port, traceOriginId, mContext);
用来初始化水印,全局只用初始化一次,具体调用如下
int initStatus = FloatWindow.initShadow(host, port, traceOriginId, this);
FloatWindow.showShadow(mContext);
用户无需判断水印视图是否存在,调用此接口只会显示一层水印视图。建议在baseActivity的onResume()方法中调用,每隔两分钟调用一次。具体如下
@Override
protected void onResume() {
super.onResume();
showThisShaow(this);
}
protected void showThisShaow(Activity context) {
if (timer == null) {
timer = new Timer();
}
if (task == null) {
task = new TimerTask() {
@Override
public void run() {
context.runOnUiThread(() -> {
int result = FloatWindow.showShadow(context);
dealResult(result);
});
}
};
}
timer.schedule(task, 0, 120000);//为了更方便得到精确的数据,应该每两分钟刷新一下
FloatWindow.hideShadow()
用户无需判断水印是否隐藏,调用此接口即可影藏水印视图。建议在baseActivity的onStop中调用,调用前需要判断是否是在前台。具体如下
protected void hideThisShadow() {
if (timer != null) {
timer.cancel();
timer.purge();
timer = null;
}
if (task != null) {
task.cancel();
task = null;
}
FloatWindow.hideShadow();
}
FloatWindow.closeShadow(mContext)
用户重新初始化SDK生成水印视图前调用销毁接口,避免反复初始化导致内存消耗增长。该接口一定要确保在MainActivity(该activity结束的时候,退出整个应用,且该activity的launchMode一定要为singleTask)的onDestroy方法中调用,具体如下
@Override
protected void onDestroy() {
super.onDestroy();
//关闭窗口
FloatWindow.closeShadow(this);//在退出当前应用的时候调用,一定要保证当前类在全局只有一个页面栈,用singleTask标记
}