Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测Android屏幕上的颜色_Android_Image_Colors - Fatal编程技术网

检测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

是否有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(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);