Screen API
Описание
IDroidScreenAPI предоставляет методы для анализа экрана устройства: поиск изображений, пикселей, получение скриншотов и управление захватом экрана.
Методы
FindImage
-
Rectangle FindImage(string imageHash, Rectangle[] rectangles, int confidenceInterval)
Выполняет поиск изображения по хэшу в указанных областях экрана.Параметры:
imageHash— хэш изображения, с которым производится сравнение;rectangles— массив областей (Rectangle), в которых выполняется поиск;confidenceInterval— точность совпадения (0–100, где больше — строже совпадение).
Возвращает:
Rectangle— область найденного изображения. -
Rectangle FindImage(string imageHash, Rectangle[] rectangles, int confidenceInterval, int searchTime)
Выполняет поиск изображения с ограничением по времени.Параметры:
imageHash— хэш изображения;rectangles— области поиска;confidenceInterval— точность совпадения;searchTime— максимальное время поиска в секундах.
Возвращает:
Rectangle— найденная область. -
Rectangle FindImage(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval)
Выполняет поиск одного из нескольких изображений.Параметры:
imageHashes— массив хэшей изображений;rectangles— области поиска;confidenceInterval— точность совпадения.
Возвращает:
Rectangle— область первого найденного изображения. -
Rectangle FindImage(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval, int searchTime)
Поиск одного из нескольких изображений с ограничением времени.Параметры:
imageHashes— массив хэшей;rectangles— области поиска;confidenceInterval— точность совпадения;searchTime— максимальное время поиска в секундах.
Возвращает:
Rectangle— найденная область.
Пример.
var screen = instance.DroidInstance.Screen;
var hash = project.Variables["imageHash"].Value; // Хэш эталонного изображения
var areas = new[] { new Rectangle(0, 0, 720, 1280) }; // Где искать - здесь весь экран
var found = screen.FindImage(hash, areas, 90); // Точность совпадения 90
if (found.IsEmpty)
throw new Exception("Изображение не найдено");
var waited = screen.FindImage(hash, areas, 90, 10); // Ждать появления до 10 секунд
FindImageBlackWhite
-
Rectangle FindImageBlackWhite(string imageHash, Rectangle[] rectangles, int confidenceInterval, int threshold)
Поиск изображения в чёрно-белом режиме.Параметры:
imageHash— хэш изображения;rectangles— области поиска;confidenceInterval— точность совпадения;threshold— порог бинаризации.
Возвращает:
Rectangle— область найденного изображения. -
Rectangle FindImageBlackWhite(string imageHash, Rectangle[] rectangles, int confidenceInterval, int threshold, int searchTime)
Ч/б поиск с таймаутом.Параметры:
imageHash— хэш;rectangles— области;confidenceInterval— точность;threshold— порог;searchTime— максимальное время поиска в секундах.
Возвращает:
Rectangle— область найденного изображения. -
Rectangle FindImageBlackWhite(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval, int threshold)
Поиск нескольких изображений в ч/б.Параметры:
imageHashes— массив хэшей;rectangles— области;confidenceInterval— точность;threshold— порог.
Возвращает:
Rectangle— область найденного изображения. -
Rectangle FindImageBlackWhite(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval, int threshold, int searchTime)
Ч/б поиск нескольких изображений с таймаутом.Параметры:
imageHashes— массив;rectangles— области;confidenceInterval— точность;threshold— порог;searchTime— максимальное время поиска в секундах.
Возвращает:
Rectangle— область найденного изображения.
Пример.
var screen = instance.DroidInstance.Screen;
var hash = project.Variables["imageHash"].Value; // Хэш эталонного изображения
var areas = new[] { new Rectangle(0, 0, 720, 1280) }; // Область поиска
var found = screen.FindImageBlackWhite(hash, areas, 90, 128); // Порог бинаризации 128
if (found.IsEmpty)
throw new Exception("Изображение не найдено");
FindImageGrayscale
-
Rectangle FindImageGrayscale(string imageHash, Rectangle[] rectangles, int confidenceInterval)
Поиск изображения в оттенках серого.Параметры:
imageHash— хэш;rectangles— области;confidenceInterval— точность.
Возвращает:
Rectangle— область найденного изображения. -
Rectangle FindImageGrayscale(string imageHash, Rectangle[] rectangles, int confidenceInterval, int searchTime)
Поиск grayscale с таймаутом.Параметры:
imageHash— хэш;rectangles— области;confidenceInterval— точность;searchTime— максимальное время поиска в секундах.
Возвращает:
Rectangle— область найденного изображения. -
Rectangle FindImageGrayscale(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval)
Поиск нескольких изображений в grayscale.Параметры:
imageHashes— массив;rectangles— области;confidenceInterval— точность.
Возвращает:
Rectangle— область найденного изображения. -
Rectangle FindImageGrayscale(string[] imageHashes, Rectangle[] rectangles, int confidenceInterval, int searchTime)
Поиск grayscale с таймаутом.Параметры:
imageHashes— массив;rectangles— области;confidenceInterval— точность;searchTime— максимальное время поиска в секундах.
Возвращает:
Rectangle— область найденного изображения.
Пример.
var screen = instance.DroidInstance.Screen;
var hash = project.Variables["imageHash"].Value; // Хэш эталонного изображения
var areas = new[] { new Rectangle(0, 0, 720, 1280) }; // Область поиска
var found = screen.FindImageGrayscale(hash, areas, 90); // Сравнение в оттенках серого
if (found.IsEmpty)
throw new Exception("Изображение не найдено");
FindPixel
-
Point FindPixel(Color color, Rectangle[] rectangles, int variation)
Ищет пиксель заданного цвета.Параметры:
color— искомый цвет (Color);rectangles— области поиска;variation— допустимое отклонение цвета.
Возвращает:
Point— координаты найденного пикселя. -
Point FindPixel(Color color, Rectangle[] rectangles, int variation, int searchTime)
Поиск пикселя с ограничением времени.Параметры:
color— цвет;rectangles— области поиска;variation— отклонение цвета;searchTime— максимальное время поиска в секундах.
Возвращает:
Point— координаты найденного пикселя. -
Point FindPixel(string htmlColor, Rectangle[] rectangles, int variation)
Ищет пиксель по цвету в HTML-формате.Параметры:
htmlColor— цвет в формате строки (например#FF0000);rectangles— области поиска;variation— допустимое отклонение.
Возвращает:
Point— координаты найденного пикселя. -
Point FindPixel(string htmlColor, Rectangle[] rectangles, int variation, int searchTime)
Поиск HTML-цвета с таймаутом.Параметры:
htmlColor— цвет;rectangles— области поиска;variation— отклонение;searchTime— максимальное время поиска в секундах.
Возвращает:
Point— координаты найденного пикселя.
Пример.
var screen = instance.DroidInstance.Screen;
var areas = new[] { new Rectangle(0, 0, 720, 1280) }; // Область поиска
var point = screen.FindPixel("#FF0000", areas, 10); // Красный пиксель, допуск 10
if (point.IsEmpty)
throw new Exception("Пиксель не найден");
var waited = screen.FindPixel(Color.Red, areas, 10, 10); // То же, но ждать до 10 секунд
FindPixels
-
Point FindPixels(Color[] colors, Rectangle[] rectangles, int variation)
Ищет пиксель из набора цветов.Параметры:
colors— массив цветов;rectangles— области поиска;variation— допустимое отклонение.
Возвращает:
Point— координаты найденного пикселя. -
Point FindPixels(Color[] colors, Rectangle[] rectangles, int variation, int searchTime)
Поиск одного из цветов с ограничением времени.Параметры:
colors— массив цветов;rectangles— области поиска;variation— отклонение;searchTime— максимальное время поиска в секундах.
Возвращает:
Point— координаты найденного пикселя. -
Point FindPixels(string[] htmlColors, Rectangle[] rectangles, int variation)
Ищет пиксель из набора HTML-цветов.Параметры:
htmlColors— массив цветов в строковом формате;rectangles— области поиска;variation— отклонение.
Возвращает:
Point— координаты найденного пикселя. -
Point FindPixels(string[] htmlColors, Rectangle[] rectangles, int variation, int searchTime)
Поиск HTML-цветов с таймаутом.Параметры:
htmlColors— массив цветов;rectangles— области поиска;variation— отклонение;searchTime— максимальное время поиска в секундах.
Возвращает:
Point— координаты найденного пикселя.
Пример.
var screen = instance.DroidInstance.Screen;
var areas = new[] { new Rectangle(0, 0, 720, 1280) }; // Область поиска
var colors = new[] { "#FF0000", "#00FF00" }; // Подойдёт любой из цветов
var point = screen.FindPixels(colors, areas, 10);
if (point.IsEmpty)
throw new Exception("Ни один из цветов не найден");
GetScreenSize
-
Size GetScreenSize()
Возвращает реальное разрешение экрана устройства в пикселях. Это физическое разрешение, о котором сообщает устройство, а не размер полученного изображения захвата, поэтому именно в этих координатах работают тач, свайп и операции с пикселями.Возвращает:
Size— ширина и высота экрана в пикселях.
Пример.
var size = instance.DroidInstance.Screen.GetScreenSize();
project.SendInfoToLog($"Разрешение экрана: {size.Width}x{size.Height}");
Значение кэшируется для устройства. После изменения разрешения (например, командой wm size WidthxHeight) вызовите ResetScreen(), чтобы оно было прочитано заново.
RefreshScreen
void RefreshScreen()
Обновляет изображение на экране. Используется если выбран тип захвата экрана, который требует ручного обновления (captureScreenMethod = "off").
Пример.
var screen = instance.DroidInstance.Screen;
instance.DroidInstance.Action.Start("off"); // Запустить устройство без постоянного захвата
screen.RefreshScreen(); // Обновить изображение вручную
ResetScreen
void ResetScreen()
Сбрасывает параметры захвата экрана и запускает новый процесс захвата. Используется для перезапуска захвата при изменении условий (например, при смене разрешения экрана командойwm size WidthxHeight).
Пример.
var screen = instance.DroidInstance.Screen;
instance.DroidInstance.Input.RootShell("wm size 720x1280"); // Сменить разрешение экрана
screen.ResetScreen(); // Перезапустить захват под новое разрешение
ScreenshotAsArray
-
byte[] ScreenshotAsArray()
Делает скриншот всего экрана.Возвращает:
Массив байтов изображения.
Пример.
var data = instance.DroidInstance.Screen.ScreenshotAsArray();
using (var ms = new MemoryStream(data))
using (var bmp = new Bitmap(ms))
bmp.Save(project.Path + "myScreen.png");
-
byte[] ScreenshotAsArray(Rectangle area)
Делает скриншот указанной области.Параметры:
area— область экрана.
Возвращает:
Массив байтов.
ScreenshotAsBase64String
-
string ScreenshotAsBase64String()
Делает скриншот экрана.Возвращает:
Строку Base64. -
string ScreenshotAsBase64String(Rectangle area)
Делает скриншот области.Параметры:
area— область экрана.
Возвращает:
Base64 строку.
Пример.
var screen = instance.DroidInstance.Screen;
var base64 = screen.ScreenshotAsBase64String(); // Весь экран
var area = screen.ScreenshotAsBase64String(new Rectangle(0, 0, 300, 300)); // Только область
var data = Convert.FromBase64String(base64);
using (var ms = new MemoryStream(data))
using (var bmp = new Bitmap(ms))
bmp.Save(project.Path + "myScreen.png");
SetCaptureScreenQuality
-
void SetCaptureScreenQuality(int quality)
Устанавливает качество захвата.Параметры:
quality— уровень качества (влияет на скорость и точность). Допустимые значения от 0 до 10.
Пример.
var screen = instance.DroidInstance.Screen;
screen.SetCaptureScreenQuality(10); // Максимальное качество - точнее поиск, но медленнее
screen.SetCaptureScreenQuality(0); // Минимальное качество - быстрее