/*Copyright ©2020 TommyLemon(https://github.com/TommyLemon/UIAuto)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.*/
package uiauto;
import static uiauto.InputUtil.GRAVITY_BOTTOM;
import static uiauto.InputUtil.GRAVITY_BOTTOM_LEFT;
import static uiauto.InputUtil.GRAVITY_BOTTOM_RIGHT;
import static uiauto.InputUtil.GRAVITY_CENTER;
import static uiauto.InputUtil.GRAVITY_LEFT;
import static uiauto.InputUtil.GRAVITY_RATIO;
import static uiauto.InputUtil.GRAVITY_RATIO_BOTTOM;
import static uiauto.InputUtil.GRAVITY_RATIO_LEFT;
import static uiauto.InputUtil.GRAVITY_RATIO_RIGHT;
import static uiauto.InputUtil.GRAVITY_RATIO_TOP;
import static uiauto.InputUtil.GRAVITY_RIGHT;
import static uiauto.InputUtil.GRAVITY_TOP;
import static uiauto.InputUtil.GRAVITY_TOP_LEFT;
import static uiauto.InputUtil.GRAVITY_TOP_RIGHT;
import static uiauto.InputUtil.X_GRAVITIES;
import static uiauto.InputUtil.Y_GRAVITIES;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Application;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.AssetManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.PowerManager;
import android.os.SystemClock;
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.ActionMode;
import android.view.Display;
import android.view.InputEvent;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.SearchEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.webkit.ValueCallback;
import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.HorizontalScrollView;
import android.widget.PopupWindow;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.PropertyFilter;
import com.yhao.floatwindow.FloatWindow;
import com.yhao.floatwindow.IFloatWindow;
import com.yhao.floatwindow.MoveType;
import com.yhao.floatwindow.ViewStateListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.annotation.Annotation;
import java.lang.ref.WeakReference;
import java.lang.reflect.Modifier;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import unitauto.NotNull;
import unitauto.apk.UnitAutoApp;
/**Application
* @author Lemon
*/
public class UIAutoApp { // extends Application {
public static final String TAG = "UIAutoApp";
private static final String BALL_GRAVITY = "BALL_GRAVITY";
private static final String BALL_GRAVITY2 = "BALL_GRAVITY2";
private static final String SPLIT_X = "SPLIT_X";
private static final String SPLIT_Y = "SPLIT_Y";
private static final String SPLIT_X2 = "SPLIT_X2";
private static final String SPLIT_Y2 = "SPLIT_Y2";
private static final String SPLIT_SIZE = "SPLIT_SIZE";
private static final String SPLIT_COLOR = "SPLIT_COLOR";
private static final String CLASS_BALL_CACHE_MAP = "CLASS_BALL_CACHE_MAP";
private static double DENSITY = Resources.getSystem().getDisplayMetrics().density;
public static boolean DEBUG = zuo.biao.apijson.Log.DEBUG;
public static long STEP_TIMEOUT = DEBUG ? 30*1000 : 60*1000;
private static UIAutoApp instance;
public static UIAutoApp getInstance() {
if (instance == null) {
instance = new UIAutoApp();
}
return instance;
}
private static Application APP;
public static Application getApp() {
return APP;
}
public Context getApplicationContext() {
return getApp().getApplicationContext();
}
public String getPackageName() {
return getApp().getPackageName();
}
public AssetManager getAssets() {
return getApp().getAssets();
}
private boolean isTimeout = false;
private final Runnable timeoutRunnable = new Runnable() {
@Override
public void run() {
if (isTimeout && isShowing && isReplay && tvControllerForward != null) {
tvControllerForward.performClick();
}
}
};
private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("mm:ss");
private final Handler mainHandler = new Handler(Looper.getMainLooper());
private Map<String, List<Node<InputEvent>>> waitMap = new LinkedHashMap<>();
private Node<InputEvent> lastWaitNode = null;
private boolean isReplay = false;
@SuppressLint("HandlerLeak")
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (isReplay && isSplitShowing) {
//通过遍历数组来实现
// if (currentTime >= System.currentTimeMillis()) {
// isReplaying = false;
// pbUIAutoSplitY.setVisibility(View.GONE);
// }
//
// MotionEvent event = (MotionEvent) msg.obj;
// dispatchEventToCurrentActivity(event);
//根据递归链表来实现,能精准地实现两个事件之间的间隔,不受处理时间不一致,甚至卡顿等影响。还能及时终止
Node<InputEvent> curNode = (Node<InputEvent>) msg.obj;
while (curNode != null && curNode.disable) { // (curNode.disable || curNode.item == null)) {
currentEventNode = curNode = curNode.next;
step ++;
// if (curNode != null && curNode.item != null) {
// output(null, curNode, activity);
// }
}
currentEventNode = curNode;
step = curNode == null ? step + 1 : curNode.step; // step ++;
// output(null, curNode, activity);
boolean isOver = step > allStep || curNode == null;
boolean canRefreshUI = isOver || curNode.type != InputUtil.EVENT_TYPE_TOUCH || curNode.action != MotionEvent.ACTION_MOVE;
i
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
零代码快准稳 UI 智能录制回放平台, 像素级自动兼容任意宽高比分辨率屏幕,毫秒级自动精准等待网络请求,录制回放快、准、稳! (651个子文件)
gradlew.bat 2KB
gradlew.bat 2KB
clearAllBuildCache.bat 182B
clearAppBuildCache.bat 56B
.gitignore 1KB
.gitignore 65B
.gitignore 65B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
.gitignore 7B
build.gradle 1KB
build.gradle 1KB
build.gradle 930B
build.gradle 930B
build.gradle 902B
build.gradle 865B
build.gradle 798B
build.gradle 682B
build.gradle 618B
build.gradle 547B
settings.gradle 89B
settings.gradle 57B
gradlew 5KB
gradlew 5KB
interceptheader.html 984B
interceptheader.html 984B
zxing.jar 323KB
unitauto-2.7.2.jar 96KB
unitauto-2.7.2.jar 96KB
gradle-wrapper.jar 53KB
gradle-wrapper.jar 52KB
UIAutoApp.java 209KB
UIAutoApp.java 196KB
UIAutoListActivity.java 33KB
AlertDialog.java 32KB
AlertDialog.java 31KB
UIAutoListActivity.java 27KB
UnitAutoActivity.java 26KB
UnitAutoActivity.java 26KB
HttpRequest.java 23KB
TestRequestAndResponseJava.java 22KB
BaseActivity.java 22KB
UnitAutoApp.java 20KB
UnitAutoApp.java 20KB
UserActivity.java 20KB
SystemBarTintManager.java 20KB
MomentActivity.java 17KB
TimeUtil.java 16KB
WriteHandlingWebViewClient.java 16KB
WriteHandlingWebViewClient.java 16KB
StringUtil.java 16KB
BaseTabActivity.java 16KB
MomentView.java 16KB
PasswordActivity.java 15KB
BaseListFragment.java 15KB
CommonUtil.java 15KB
BaseTabFragment.java 14KB
EditTextInfoActivity.java 14KB
TimePickerWindow.java 13KB
HttpManager.java 13KB
HttpManager.java 13KB
DatePickerWindow.java 13KB
BaseListActivity.java 12KB
InputUtil.java 12KB
InputUtil.java 12KB
MomentListFragment.java 12KB
UserListFragment.java 12KB
CameraManager.java 12KB
NumberPasswordActivity.java 12KB
XListView.java 12KB
CacheManager.java 12KB
GridPickerView.java 11KB
EditTextInfoWindow.java 11KB
MainTabActivity.java 11KB
MineFragment.java 11KB
LoginActivity.java 11KB
HttpManager.java 11KB
BaseFragment.java 11KB
HttpManager.java 10KB
ServerSettingActivity.java 10KB
BaseView.java 10KB
CameraConfigurationManager.java 9KB
ImageLoaderUtil.java 9KB
WebViewActivity.java 9KB
EditTextManager.java 9KB
CutPictureActivity.java 9KB
PlacePickerWindow.java 9KB
EditTextUtil.java 9KB
RequestActivity.java 8KB
DataKeeper.java 8KB
AboutActivity.java 8KB
BaseBottomTabActivity.java 8KB
WalletActivity.java 8KB
BottomMenuWindow.java 7KB
SelectPictureActivity.java 7KB
共 651 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6732
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现本份代码能对图像进行gabor滤波处理,结合指纹方向图以及指纹沟壑频率特性,对指纹图像进行增强.rar
- 基于matlab实现RBM神经网络实现了手写数字体识别的GUI程序.rar
- 基于matlab实现蝙蝠算法优化相关向量机建模对数据进行建模和预测.rar
- 基于matlab实现编写的禁忌搜索算法,解决了TSP问题,对初学者有重要的参考价值.rar
- 基于matlab实现SOH关于IMU进行姿态求解的C代码,里面包含了两套代码,分别是重力约束法求解和梯度下降法求解.rar
- 1_简单电子邮件客户端.zip
- 基于matlab实现powell优化搜索算法,适合于多参数优化且目标函数中不包含参数的情况.rar
- 基于matlab实现PID神经网络前向和反向学习算法的matlab的原程序代码.rar
- 基于matlab实现nsga-2的多目标优化算法,有注解.rar
- AIR-AP1815-K9-ME-8-5-182-0.zipFor 1815 1830 1840 1850 2700 3700
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功