检测Android屏幕上的颜色
是否有Android程序可以检测屏幕上的检测Android屏幕上的颜色,android,image,colors,Android,Image,Colors,是否有Android程序可以检测屏幕上的像素颜色,并对x,y坐标进行点击 检测某个区域的颜色并获得像素坐标(若程序不存在)的最佳算法是什么 此程序在400x400像素区域检测颜色: //Set aim color var rgb = 197137164; //Init x,y pixels var x = 0; var y = 0; var ex = 0; :myloop for(x; x<400; x++) { for(y;y<400;y++) { if
像素颜色
,并对x,y坐标进行点击
//Set aim color
var rgb = 197137164;
//Init x,y pixels
var x = 0;
var y = 0;
var ex = 0;
:myloop
for(x; x<400; x++)
{
for(y;y<400;y++)
{
if(getcolor(x,y) == rgb)
{
RaiseEvent(x,y);
set ex = 1;
break;
}
if(ex == 1){break;}
}
}
sleep(10000);
set x = 0;
set y = 0;
set ex = 0;
goto myloop;
//设置目标颜色
var rgb=197137164;
//初始x,y像素
var x=0;
var y=0;
var-ex=0;
:myloop
对于(x;x编辑:
试着不要逐个获取每个像素,而是使用getpixels()方法,迭代像素数组,这比逐个获取像素要快得多
所以当你得到一维像素阵列时,你可以对它进行迭代
假设你有400x200像素(80000),用for循环遍历像素,检查像素的颜色是否与你搜索的颜色匹配。
大概是这样的:
var coordinate;
for(int i=0; i<pixels.length;i++){
if(pixel[i] == yourcolor){
coordinate=i;
break;
}
}
var coordX = coordinate%400; //coordinate X = which column
var coordY = coordinate/200; //coordinate Y = which row
另外,我建议不要将多个命令放在一行中。不,当找到颜色时,睡眠(1000)用于延迟。它只执行一次。例如,你找到某个对象并单击它,你需要一些时间等待另一个检测。这就是为什么会有睡眠(1000)。我在另一个地方使用sleep进行编辑,但这并不重要。只是为了更好地查看,而不是优化。无论如何,为什么需要sleep()呢?是的,getPixels()方法是很好的优化方法。除了调用getcolor 16000次外,我将调用getPixels一次。但它仍然会比较16000倍我的标准具值(如果之前没有找到的话)。如果对象的宽度为4px,则可能需要每4px循环一次,而不是每1px循环一次。在找到颜色后,我需要睡眠以等待。我的机器人应该在找到颜色后,在再次开始循环后执行一些操作。
sleep(10000);