Это связано с тем, что SurfaceView использует поток OpenGL для рисования и рисования непосредственно в аппаратном буфере. Вы должны использовать glReadPixels (и, возможно, GLWrapper).
См. Поток: Скриншот Android OpenGL
Браузеры не могут справиться с таким количеством аргументов. См. Этот фрагмент, например:
alert.apply(window, new Array(1000000000));
. Это приводит к RangeError: Maximum call stack size exceeded
, что аналогично вашей проблеме.
Чтобы решить эту проблему, сделайте:
var arr = [];
for(var i = 0; i < 1000000; i++){
arr.push(Math.random());
}