Что-то я не понял, зачем переводишь в строку и обратно? Это же медленно!
Лучше воспользуйся битовыми операциями.

Код:
r = 0;
g = 0;
b = 0;
while (_byteArray.position < _byteArray.length) {
k++;
c = _byteArray.readUnsignedInt();
r += (c & 0xff0000)>>16; // это красная составляющая
g += (c & 0xff00)>>8; // это зелёная составляющая
b += c & 0xff; // это синяя составляющая
}
_color= ((r/k) << 16) + ((g/k) << 8) + b/k;