一个测试surfaceflinger的小程序
来源:互联网 发布:灯光设计用什么软件 编辑:程序博客网 时间:2024/06/05 23:01
程序放在Android4.2的源码目录中能编译通过,也可以执行。本人所期待的结果是在android模拟器的屏幕上显示一个圆,但是实际上什么都没有显示!问题出在哪里?我把程序贴上!求大侠赐教!
Android.mk文件
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER"LOCAL_SRC_FILES:= \ main.cppLOCAL_SHARED_LIBRARIES := \ libcutils \ libandroidfw \ libutils \ libbinder \ libui \ libskia \ libguiLOCAL_MODULE:= test-sfLOCAL_MODULE_TAGS := optionalinclude $(BUILD_EXECUTABLE)
main.cpp文件
#include <sys/types.h>#include <sys/stat.h>#include <sys/mman.h>#include <fcntl.h>#include <dirent.h>#include <unistd.h>#include <string.h>#include <linux/fb.h>#include <binder/IPCThreadState.h>#include <binder/ProcessState.h>#include <binder/IMemory.h>#include <binder/IPCThreadState.h>#include <binder/IServiceManager.h>#include <binder/MemoryHeapBase.h>#include <binder/MemoryBase.h>#include <binder/Binder.h>#include <utils/Log.h>#include <cutils/atomic.h>#include <cutils/properties.h>#include <utils/threads.h>#include <utils/Atomic.h>#include <utils/String16.h>#include <android_runtime/AndroidRuntime.h>#include <media/AudioTrack.h>#include <gui/Surface.h>#include <gui/ISurface.h>#include <gui/ISurfaceComposer.h>#include <gui/SurfaceComposerClient.h>#include <ui/DisplayInfo.h>#include <core/SkTypeface.h>#include <core/SkTemplates.h>#include <core/SkRegion.h>#include <core/SkDevice.h>#include <core/SkRect.h>#include <core/SkCanvas.h>#include <core/SkBitmap.h>#include <core/SkStream.h>//#include <images/SkImageDecoder.h>//#include <images/SkImageEncoder.h>using namespace android;int main(){ //sp<ProcessState> proc(ProcessState::self()); //ProcessState::self()->startThreadPool(); //IPCThreadState::self()->joinThreadPool(); sp<SurfaceControl> surfaceControl; sp<SurfaceComposerClient> surfaceclient; sp<Surface> surface; SkBitmap bitmap; Surface::SurfaceInfo info; DisplayInfo display; SkPaint paint; paint.setARGB(255, 255, 0, 0); surfaceclient = new SurfaceComposerClient(); surfaceclient->getDisplayInfo(0, &display); surfaceControl = surfaceclient->createSurface(String8("test"), display.w, display.h, PIXEL_FORMAT_RGBA_8888); surfaceclient->openGlobalTransaction(); surfaceControl->setLayer(0x40000000); surfaceControl->setSize(display.w, display.h); surfaceControl->setPosition(0, 0); surfaceControl->show( ); surfaceclient->closeGlobalTransaction(); surface = surfaceControl->getSurface(); surface->lock(&info); bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); bitmap.setIsOpaque(true); bitmap.setPixels(info.bits); SkCanvas* canvas = new SkCanvas(bitmap); canvas->drawCircle(640, 260, 100, paint); surface->unlockAndPost(); sleep(3); return 0;}
进展:
上面的问题还是没能解决!原本想用skia来画图的,只是想验证surfaceflinger的功能!貌似android4.2用HWUI代替了skia。skia的接口没研究过,不会使用。移植工作进行中,暂时没时间去研究skia,所以只能从现有的东西上修改了!站在巨人的肩膀上,恩!翻了一下开机动画bootanimation的代码,发现它是用opengl接口画图的,无所谓,把它不必要的功能砍掉做成自己的测试程序,OK!成功显示自己的图片了!
- 一个测试surfaceflinger的小程序
- proc的一个测试小程序
- 一个 std:vector 的小测试程序
- 一个测试栈大小的小程序
- 一个测试“专注”的小程序
- 一个测试中用到的小程序
- winpcap的一个小的抓包测试程序
- 一个基于epoll的服务器压力测试的小程序
- [初]对于C++内存模型的一个测试小程序
- 一个发包小程序 一种用于自动化测试的脚本语言
- 一个有关程序运行时间的小测试
- 20150616完 一个测试注意力的小程序
- 一个换算小程序引发的测试血案
- 【Everyday】 ___ 一个测试主方法的小程序
- Android 编译SurfaceFlinger测试程序resize
- webservice 的测试小程序
- 测试接口的小程序
- 导航的一个小测试
- Yii Framework 开发教程(24) 数据库-DAO 示例
- 普通应用使用Surface的方法
- file解决IE8中文件上传报typeerror拒绝访问问题的解决方法
- Java JNA 详解
- 设计模式.笔记.结合生活场景理解
- 一个测试surfaceflinger的小程序
- 序
- Ubuntu下安装多用户vsftp全过程
- 闲聊SEDA分段式事件驱动架构
- Linux环境变量设置和适用情况
- use gdb on Android to debug mediaserver
- Struts2中Session的使用
- 移动互联网时代移动金融的演变和发展
- Getting Started with POSIX Threads