我正在使用Camera2 API,我正在使用Renderscript执行一些图像处理。除了S9 +之外,所有设备(Nexus 5 / 5x,Pixel,Pixel 2,S8 +,Note 8)都能正常运行。
基本上我正在做的是创建一个Allocation
来接收相机数据,另一个Allocation
将使用相机数据,应用转换并在Surface
上显示结果这将作为相机预览。
在S9 +上我得到一个黑屏(没有预览),LogCat显示以下错误:
我阅读了有关此类错误的其他帖子,但它们不适用于我的案例,因为代码在其他设备上按预期工作!
这只发生在S9上,其他三星设备没有任何问题。
S8 +在Android Nougat(24)上,而S9 +在Oreo(26)上,都有OpenGL ES 3.2。
有没有人知道如何解决这个问题?
PS:在运行Oreo的其他设备上测试没有任何问题
修改
我将S9 +更新到最新版本( R16NW.G965FXXU1ARCC ),但问题仍然存在。
另外,根据评论建议,我检查了 / vendor / lib64 文件夹,检查libbccArm
和libccc
是否存在,但是只有其中一个存在:
稍后编辑
在系统上找到 libbcc.so
但是S9 +似乎缺少32位版本(左边是S8 +,右边是S9 +)
答案 0 :(得分:1)
最新更新修复了renderscript问题(我现在可以处理1920x1080图像)。
在Galaxy S9 +上测试,内部版本号为R16NW.G965FXXU1BRE5
答案 1 :(得分:0)
我在同一部手机上遇到同样的问题。
使用改编自https://android.googlesource.com/platform/frameworks/base/+/dd6c8b3/tests/RenderScriptTests/LivePreview/src/com/android/rs/livepreview/的代码进行测试, 看起来renderscripts正在研究S9 +以获得更低的分辨率(176x144和256x144测试),但不高于此。可能是由于非GPU renderscript驱动程序的限制,它被作为后备加载。对我们大多数人来说,解决方案并不多,但至少你会在屏幕上看到一些东西。