我正在使用Android SDK的物联网摄像头。我想实现从摄像头拍摄快照并将其保存到外部存储。SDK提供了一个方法,它将absoluteFilePath作为参数。
int snapshot(String absoluteFilePath, Context context, OperationDelegateCallBack callBack);
不幸的是,由于Android 10中引入了作用域存储,此方法不起作用。有信息表明,如果我想使用作用域存储,我需要自己实现此功能。在这种情况下,我需要获取YUV420SP(NV21)格式的原始帧数据。SDK为此提供了回调:
fun onReceiveFrameYUVData(
sessionId: Int,
y: ByteBuffer,
u: ByteBuffer,
v: ByteBuffer,
videoFrameInfo: TuyaVideoFrameInfo?,
camera: Any?,
)
我想使用YuvImage
类从android图形包转换此图像为JPEG(它提供了方法compressToJpeg
)。该类的构造函数只需要一个单字节数组作为参数。从SDK回调提供YUV组件作为单独的缓冲区。我应该如何concat这三个缓冲区到一个数组使用YuvImage
类?
顺便说一句,这是正确的方法还是我应该使用其他方法?
SDK文档:https://developer.tuya.com/en/docs/app-development/avfunction?id=Ka6nuvucjujar#title-3-Video%20screenshots
1条答案
按热度按时间7eumitmz1#
不幸的是,由于Android 10中引入了作用域存储,因此此方法不起作用。
当然,如果你使用一个普通的可读写的完整路径,它仍然可以工作。
对于Android 10你不必改变你通常的路径。(我不明白你有任何问题).
对于Android 11+,请使用DCIM和Pictures等公共映像目录。