请教各位大大,在实现overlay系统时遇到了以下一些问题,望赐教:
1.自带的test-overlay测试程序总是编译出错
frameworks/base/include/utils/RefBase.h:323: error: cannot convert 'android::SurfaceControl* const' to 'android::Surface*' in initialization ,将createSurface的返回类型改为SurfaceControl后就可以编译
通过,这样做对实际的surface create有无影响?
2.overlay系统的control device是在displayhardware初始化的时候打开的,这个初始化是在系统起来后就已经
完成的吗?
3.经过1的改动后编译成的测试程序,在ui层就返回了一个空的overlayRef,根本调不到surfaceflinger中的LayerBuffer,
这是什么原因造成的,跟1中所做的改动有关吗?
望板上各位大大帮帮忙,不吝赐教,困扰很多天了!
1.自带的test-overlay测试程序总是编译出错
frameworks/base/include/utils/RefBase.h:323: error: cannot convert 'android::SurfaceControl* const' to 'android::Surface*' in initialization ,将createSurface的返回类型改为SurfaceControl后就可以编译
通过,这样做对实际的surface create有无影响?
2.overlay系统的control device是在displayhardware初始化的时候打开的,这个初始化是在系统起来后就已经
完成的吗?
3.经过1的改动后编译成的测试程序,在ui层就返回了一个空的overlayRef,根本调不到surfaceflinger中的LayerBuffer,
这是什么原因造成的,跟1中所做的改动有关吗?
望板上各位大大帮帮忙,不吝赐教,困扰很多天了!
解决方案 »
- 美图秀秀和魔图精灵中菜单栏的实现
- 请教下读取网络数据的bytes = mmInStream.read(buffer),关闭socket为什么不扔出错误
- android SearchView 的诡异问题!!!诡异问题!!!诡异问题!!!诡异问题!!!
- Android 传感器编程请教
- 后缀为.bm的文件怎样打开?
- 求教,蓝牙刷卡器(Pos机?)如何连接Android设备
- Android程序如何启动UC浏览器或者Android自带浏览器
- Handler类接收不到消息
- 百度云推送在jdk1.5报错
- Android RecyclerView + drakeet.multitype 复杂布局实现瀑布流出现闪烁,留白的问题
- 怎么在JAVA代码里动态修改 LinearLayout 的 style?
- android Notification
g++ -version
看你的gcc是哪个版本的。如果是大于4.3版本的,那就跟新到4.3版本
2. 是的,但是overlay需要用户自己实现的,默认情况下是没有这个系统的。你看看out/target/product/<platform>/system/lib/hw 下有没有overlay.xxx.so 这样的库,如果没有,绝对是起不来的。 如果你有的话,看看overlay.xxx.so中的xxxx是不是符合你的系统,这个在logcat中可以看到你请求的xxxx是什么的。 displayHardware的init的code:你可以打trace
mOverlayEngine = NULL;
if (hw_get_module(OVERLAY_HARDWARE_MODULE_ID, &module) == 0) {
overlay_control_open(module, &mOverlayEngine);
LOGE("ERROR! hw_get_module OK %s %d!!!", __FILE__, __LINE__);
}
else
{
LOGE("ERROR! can not open overlay%s %d!!!", __FILE__, __LINE__);
}3. 在layer buffer的create overlay部分,有:
LayerBuffer::OverlaySource::OverlaySource(LayerBuffer& layer,
sp<OverlayRef>* overlayRef,
uint32_t w, uint32_t h, int32_t format)
: Source(layer), mVisibilityChanged(false),
mOverlay(0), mOverlayHandle(0), mOverlayDevice(0)
{
overlay_control_device_t* overlay_dev = mLayer.mFlinger->getOverlayEngine();
if (overlay_dev == NULL) {
// overlays not supported,
LayerBuffer::OverlaySource::OverlaySource %s %d", __FILE__, __LINE__);
return;
}
...当没有找到overlay dev的时候,直接返回,没有带回OverlayRef,这样overlayRef就是NULL了
综上,你没有实现overlay。在android根目录上建一个vendor目录,自己实现一下吧。
你可以参考下ti的实现:
http://android.git.kernel.org/?p=platform/hardware/ti/omap3.git;a=summary