1) 在JAVA层刷新:
如果要在thread里刷新, 要使用postInvalidate, 如果在timer里刷新, 可以通过Handler Message来刷新。 具体刷新要重写onDraw函数。
2) 在JNI里刷新:
将SurfaceHolder指针传递给NDK(JNI层用VideoDriver_register注册)。 具体刷新用以下方法:
void * pbits;
VideoDriver_getPixels(width, height, &pbits);
memcpy(pbits, rgbBuffer, width*height*2);//rgbBuffer是rgb565格式的数据
VideoDriver_updateSurface();
具体采用哪种刷新方法, 可根据速度的要求, 以及程序架构复杂性的角度来考虑。 如果对播放速度要求不高,可在java层刷新,平台移植性会好一些。