为了提高刷屏效率,研究了下直接在HAL层刷屏的方法。另外一个好处是这样的能够支持使用YUV 数据直接刷屏。(依赖系统支持) 1:使用surfaceview,并按你要求设置surface的格式和颜色格式 holder.setFormat,holder.setType,注在Android2.0以后,貌似这个方法只支持565了,也没有细看源代码,不知道为什么。 2:在surfaceCreated函数里面,得到surface 对象,并通过JNI 传到HAL层 3:JNI 初始化的时候,得到android/view/Surface里面的一个field: mSurface 4:在JNI 函数里面,mSurface的对应的c指针 sp<Surface> mysurface = (Surface *)env->GetIntField(surface, s_fields.surface); 5:这样就可以使用了这个mysurface了。 if(mysurface->isValid()) // Do something... mysurface->unlockAndPost(); }else 6: 注意,需要include Surface.h IMemory.h 并link 相应库 using namespace android; 也是必须的。 (chenji001) |