Кажется, проблема в том, что Android не обновляет «номер поколения» текстуры, которую он использует за кулисами для растрового изображения, поэтому он не использует новые данные пикселей.У меня была похожая проблема (в моей библиотеке рисования карт, CartoType, которая работает как нативный код на Android), и я решил ее, записав значение 0 в верхний левый пиксель перед получением свежих данных.Вот мой Java-код с пояснительным комментарием:
private void getMap()
{
NativeInterface.getMap(iDemoFrameworkRef,iBitmapData);
iBuffer.rewind();
/*
Hack: we have to change the bitmap because the Android hardware-accelerated canvas will not
re-upload the bitmap unless it has a different generation number,
and copyPixelsFromBuffer doesn't change the generation number.
See http://osdir.com/ml/Android-Developers/2011-10/msg02215.html.
*/
iBitmap.setPixel(0,0,0);
iBitmap.copyPixelsFromBuffer(iBuffer);
}
Эта проблема возникла на Galaxy Nexus с использованием Android 4.0.Код отлично работал на симуляторе, но не на оборудовании, пока я не добавил хак.Тогда все было хорошо.