Android5.0 显示系统(一)————从一个简单的例子开启

来源:互联网 发布:短篇小说推荐 知乎 编辑:程序博客网 时间:2024/06/06 12:49

      我们从一个简单的例子开始,这个程序可以运行,比较简单。

#include <cutils/memory.h>#include <utils/Log.h>#include <binder/IPCThreadState.h>#include <binder/ProcessState.h>#include <binder/IServiceManager.h>#include <gui/Surface.h>#include <gui/SurfaceComposerClient.h>#include <android/native_window.h>using namespace android;int main(int argc, char** argv){    // set up the thread-pool    sp<ProcessState> proc(ProcessState::self());    ProcessState::self()->startThreadPool();    // create a client to surfaceflinger    sp<SurfaceComposerClient> client = new SurfaceComposerClient();        sp<SurfaceControl> surfaceControl = client->createSurface(String8("resize"),            160, 240, PIXEL_FORMAT_RGB_565, 0);    sp<Surface> surface = surfaceControl->getSurface();    SurfaceComposerClient::openGlobalTransaction();    surfaceControl->setLayer(100000);    SurfaceComposerClient::closeGlobalTransaction();    ANativeWindow_Buffer outBuffer;    surface->lock(&outBuffer, NULL);    ssize_t bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);    android_memset16((uint16_t*)outBuffer.bits, 0xF800, bpr*outBuffer.height);    surface->unlockAndPost();    surface->lock(&outBuffer, NULL);    android_memset16((uint16_t*)outBuffer.bits, 0x07E0, bpr*outBuffer.height);    surface->unlockAndPost();    SurfaceComposerClient::openGlobalTransaction();    surfaceControl->setSize(320, 240);    SurfaceComposerClient::closeGlobalTransaction();        IPCThreadState::self()->joinThreadPool();        return 0;}


阅读全文
0 0