mirror of
https://github.com/TonyJiangWJ/Auto.js.git
synced 2026-06-21 21:01:43 +08:00
release 2.0.12 Beta
This commit is contained in:
parent
7c88e578fe
commit
5a79bb577f
@ -9,8 +9,8 @@ android {
|
||||
applicationId "com.stardust.scriptdroid"
|
||||
minSdkVersion 19
|
||||
targetSdkVersion 23
|
||||
versionCode 136
|
||||
versionName "2.0.12 Alpha3日志版"
|
||||
versionCode 137
|
||||
versionName "2.0.12 Beta"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
multiDexEnabled true
|
||||
ndk {
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
### requestScreenCapture(\[width, height\])
|
||||
|
||||
* width \<Number\> 可选参数
|
||||
参数width和height用于指定截图的分辨率,默认为屏幕宽高。
|
||||
11
app/src/main/assets/sample/QQ与微信/微信循环发送图片.js
Normal file
11
app/src/main/assets/sample/QQ与微信/微信循环发送图片.js
Normal file
@ -0,0 +1,11 @@
|
||||
"auto";
|
||||
while (true) {
|
||||
className("ImageButton").descStartsWith("更多功能按钮").click();
|
||||
while(!click("相册"));
|
||||
sleep(500);
|
||||
className("GridView").findOne().child(1).click();
|
||||
sleep(200);
|
||||
while(!click("发送"));
|
||||
sleep(300);
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ var img = captureScreen();
|
||||
toastLog("开始找色");
|
||||
//指定在位置(90, 220)宽高为900*1000的区域找色。
|
||||
//0xff00cc是编辑器的深粉红色字体(字符串)颜色
|
||||
var point = findColorInRegion(img, 0xff00cc, 90, 220, 900, 1000);
|
||||
var point = findColorInRegion(img, "#ff00cc", 90, 220, 900, 1000);
|
||||
if(point){
|
||||
toastLog("x = " + point.x + ", y = " + point.y);
|
||||
}else{
|
||||
|
||||
@ -7,7 +7,7 @@ var img = captureScreen();
|
||||
toastLog("开始找色");
|
||||
//指定在位置(90, 220)宽高为900*1000的区域找色。
|
||||
//0xff00cc是编辑器的深粉红色字体(字符串)颜色
|
||||
var point = findColor(img, 0xff00cc, {
|
||||
var point = findColor(img, "#ff00cc", {
|
||||
region: [90, 220, 900, 1000],
|
||||
threads: 8
|
||||
});
|
||||
|
||||
@ -6,7 +6,7 @@ launchApp("QQ");
|
||||
sleep(2000);
|
||||
var img = captureScreen();
|
||||
toastLog("开始找色");
|
||||
var point = findColor(img, 0xf64d30);
|
||||
var point = findColor(img, "#f64d30");
|
||||
if(point){
|
||||
toastLog("x = " + point.x + ", y = " + point.y);
|
||||
}else{
|
||||
|
||||
@ -6,7 +6,7 @@ var img = captureScreen();
|
||||
//0xffffff为白色
|
||||
toastLog("开始找色");
|
||||
var point = findColor(img, 0xffffff, {
|
||||
//指定算法为rgb+,更默认算法rgb更准确,但时间更久
|
||||
//指定算法为rgb+,比默认算法rgb更准确,但时间更久
|
||||
algorithm: "rgb+",
|
||||
//指定颜色临界值为16
|
||||
threshold: 16,
|
||||
@ -19,4 +19,14 @@ if(point){
|
||||
toastLog("没有找到");
|
||||
}
|
||||
|
||||
|
||||
point = findColor(img, 0xffffff, {
|
||||
//指定算法为颜色差值,比默认算法rgb更快
|
||||
algorithm: "diff",
|
||||
//指定r, b, b分别都在范围ff±20内
|
||||
threshold: 0x202020,
|
||||
});
|
||||
if(point){
|
||||
toastLog("x = " + point.x + ", y = " + point.y);
|
||||
}else{
|
||||
toastLog("没有找到");
|
||||
}
|
||||
|
||||
@ -44,8 +44,6 @@ public class App extends MultiDexApplication {
|
||||
setUpDebugEnvironment();
|
||||
init();
|
||||
registerActivityLifecycleCallback();
|
||||
Logcat.deleteLogFile();
|
||||
Logcat.startLogSavingIfNeeded();
|
||||
}
|
||||
|
||||
private void setUpStaticsTool() {
|
||||
|
||||
@ -24,7 +24,7 @@ module.exports = function(__runtime__, scope){
|
||||
y = region[1] || 0;
|
||||
width = region[2] || (img.getWidth() - x);
|
||||
height = region[3] || (img.getHeight() - y);
|
||||
threads = options.threads || 4;
|
||||
threads = options.threads || 2;
|
||||
if(options.threshold !== 0){
|
||||
threshold = options.threshold || 8;
|
||||
}
|
||||
@ -57,6 +57,8 @@ module.exports = function(__runtime__, scope){
|
||||
return new com.stardust.autojs.runtime.api.image.ColorDetector.RGBDistanceDetector(color, threshold);
|
||||
case "equal":
|
||||
return new com.stardust.autojs.runtime.api.image.ColorDetector.EqualityDetector(color);
|
||||
case "diff":
|
||||
return new com.stardust.autojs.runtime.api.image.ColorDetector.DifferenceDetector(color, threshold);
|
||||
case "rgb+":
|
||||
return new com.stardust.autojs.runtime.api.image.ColorDetector.WeightedRGBDistanceDetector(color, threshold);
|
||||
case "hs":
|
||||
|
||||
@ -210,7 +210,6 @@ public class ColorFinder {
|
||||
Thread thread = Thread.currentThread();
|
||||
ColorIterator.Pixel pixel = new ColorIterator.Pixel();
|
||||
while (mResultBox.isNull() && mColorIterator.hasNext() && !thread.isInterrupted()) {
|
||||
mColorIterator.nextColor(pixel);
|
||||
mColorIterator.nextColor(pixel);
|
||||
if (mColorDetector.detectsColor(pixel.red, pixel.green, pixel.blue)) {
|
||||
mResultBox.set(new Point(mColorIterator.getX(), mColorIterator.getY()));
|
||||
|
||||
@ -111,13 +111,12 @@ public interface ColorIterator {
|
||||
pixel.red = mByteBuffer.get() & 0xff;
|
||||
pixel.green = mByteBuffer.get() & 0xff;
|
||||
pixel.blue = mByteBuffer.get() & 0xff;
|
||||
mByteBuffer.get();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 中心螺旋。未完成。
|
||||
*/
|
||||
// TODO: 2017/5/29 中心螺旋。未完成。
|
||||
class CentralSpiralIterator extends ImageColorIterator {
|
||||
|
||||
private static final int DIRECTION_RIGHT = 0;
|
||||
|
||||
@ -25,7 +25,7 @@ public class ScreenCapturer {
|
||||
private ImageReader mImageReader;
|
||||
private MediaProjection mMediaProjection;
|
||||
private VirtualDisplay mVirtualDisplay;
|
||||
private final Object mImageLock = new Object();
|
||||
private Image mImage;
|
||||
|
||||
public ScreenCapturer(Context context, Intent data, int screenWidth, int screenHeight, int screenDensity) {
|
||||
MediaProjectionManager manager = (MediaProjectionManager) context.getSystemService(Context.MEDIA_PROJECTION_SERVICE);
|
||||
@ -49,8 +49,11 @@ public class ScreenCapturer {
|
||||
}
|
||||
|
||||
public Image capture() {
|
||||
Image image = mImageReader.acquireLatestImage();
|
||||
if (image == null) {
|
||||
if (mImage != null) {
|
||||
mImage.close();
|
||||
}
|
||||
mImage = mImageReader.acquireLatestImage();
|
||||
if (mImage == null) {
|
||||
Looper.prepare();
|
||||
mImageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
|
||||
@Override
|
||||
@ -59,9 +62,9 @@ public class ScreenCapturer {
|
||||
}
|
||||
}, null);
|
||||
Looper.loop();
|
||||
image = mImageReader.acquireLatestImage();
|
||||
mImage = mImageReader.acquireLatestImage();
|
||||
}
|
||||
return image;
|
||||
return mImage;
|
||||
}
|
||||
|
||||
|
||||
@ -73,5 +76,8 @@ public class ScreenCapturer {
|
||||
if (mVirtualDisplay != null) {
|
||||
mVirtualDisplay.release();
|
||||
}
|
||||
if (mImage != null) {
|
||||
mImage.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,10 @@ package com.stardust.automator.simple_action;
|
||||
import android.graphics.Rect;
|
||||
|
||||
import com.stardust.automator.UiObject;
|
||||
import com.stardust.automator.filter.BoundsFilter;
|
||||
import com.stardust.view.accessibility.AccessibilityNodeInfoHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@ -59,26 +62,29 @@ public abstract class FilterAction extends SimpleAction {
|
||||
|
||||
@Override
|
||||
public List<UiObject> filter(UiObject root) {
|
||||
return Collections.singletonList(findAccessibilityNodeInfosByBounds(root));
|
||||
List<UiObject> list = new ArrayList<>();
|
||||
findAccessibilityNodeInfosByBounds(root, list);
|
||||
return list;
|
||||
}
|
||||
|
||||
private UiObject findAccessibilityNodeInfosByBounds(UiObject root) {
|
||||
private void findAccessibilityNodeInfosByBounds(UiObject root, List<UiObject> list) {
|
||||
if (root == null)
|
||||
return null;
|
||||
return;
|
||||
Rect rect = new Rect();
|
||||
root.getBoundsInScreen(rect);
|
||||
if (rect.equals(mBoundsInScreen)) {
|
||||
return root;
|
||||
list.add(root);
|
||||
}
|
||||
int oldSize = list.size();
|
||||
for (int i = 0; i < root.getChildCount(); i++) {
|
||||
UiObject child = root.child(i);
|
||||
if (child == null)
|
||||
continue;
|
||||
UiObject nodeInfo = findAccessibilityNodeInfosByBounds(child);
|
||||
if (nodeInfo != null)
|
||||
return nodeInfo;
|
||||
findAccessibilityNodeInfosByBounds(child, list);
|
||||
}
|
||||
if (oldSize == list.size() && rect.contains(mBoundsInScreen)) {
|
||||
list.add(root);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
Reference in New Issue
Block a user