【发布时间】:2020-12-04 06:38:09
【问题描述】:
我正在尝试使用服务截取我的 Android 设备(Samsung Galaxy Tab S5e)的屏幕截图。 我正在使用来自here 的代码。
在链接的代码中,使用了ImageReader.newInstance(mWidth, mHeight, PixelFormat.RGBA_8888, 2);。注意PixelFormat.RGBA_8888。现在,这不允许我编译我的项目,我收到错误:Error: Must be one of: ImageFormat.UNKNOWN, ImageFormat.RGB_565... etc。
所以我尝试将 PixelFormat.RGBA_8888 更改为 ImageFormat.JPEG 并编译。但是,我的应用程序现在崩溃并显示以下消息:
RGBA 覆盖 BLOB 格式缓冲区应具有高度 == 宽度
我尝试将PixelFormat.RGBA_8888 更改为0x4、0x1、ImageFormat.RGB_565 和其他一些。这样做通常会导致消息异常:
生产者输出缓冲区格式 0x1 与 ImageReader 配置的缓冲区格式 0x4 不匹配。
这与onImageAvailable(ImageReader reader)中描述的格式有某种联系。
我看过following SO post,似乎正确的格式是特定于设备的,但我都试过了,错误是上述之一。
我完全不知所措(而且我是 Java/Android 新手),所以真的需要一些帮助。
【问题讨论】:
-
你找到答案了吗?我有同样的问题。
-
@TeekamSuthar 最后我执行了
PixelCopy request。请参阅此处的文档 developer.android.com/reference/android/view/PixelCopy 和此处的示例:stackoverflow.com/a/51103037/596841 请注意,我没有将其构建到服务中,尽管它应该是可能的。 -
感谢您的快速回复。会试试这个!
-
面临同样的问题。运气好吗?
-
@UsmanRana 检查我的评论
标签: android image image-formats pixelformat image-reader