android:hardwareAccelerated="false"属性引发的问题

524 阅读1分钟

最近在接入海康SDK,进行摄像头实时预览时,发现 TexttureView的onSurfaceTextureAvailable等相关回调都没有执行,导致SurfaceTexture没有创建,点击实时预览时就直接空指针了。 官方demno运行是正常的,百思不得其解,搞了半天没头绪。最后没办法,又新建了空白项目,集成了sdk,运行发现可以正常预览。 问题来程序是不会骗人的,相关业务代码都一样,只能怀疑是不是某些特殊配置导致,经历了各种排查,比对AndroidManifest.xml时,发现了

android:hardwareAccelerated="false"

官方demo里是没有写这个属性的,于是就删除这个属性,运行代码,哎,竟然正常了,也不知道这个属性到底啥意思然后就去百度了下。

功能:启动硬件加速 可以在Application、Activity、Window、View四个级别进行硬件加速控制。 重点:

“TextureView can only be used in a hardware accelerated window. When rendered in software, TextureView will draw nothing.” 也就是说“TextureView只能在硬件加速窗口中使用。在软件中渲染时,TextureView将不绘制任何内容。

android:hardwareAccelerated=“true” 默认的这个属性就是true.如果设置为false,可以看到onSurfaceTextureAvailable()这个回调就进不来了。

参考文章:# 慎用hardwareAccelerated=“false“解决出现OutOfMemoryError设置关闭硬件加速导致播放器黑屏 # android:hardwareAccelerated=“false“属性慎用