我只需要使用Camera2 API(使用
https://github.com/googlesamples/android-Camera2Basic
)构建应用程序。早些时候,我使用了CameraAPI来做同样的事情,结果非常好。现在,我能够捕获图像并将其保存在文件中。
我被困在这一点上:
我想将捕获的图像发送到另一个活动,在该活动中,我想在imageview中显示图像
. 与CameraAPI不同,Camera2 API处理这个问题相当麻烦。
这是我试图传递inten的代码示例,即在我获得输出变量集后,我想启动Activity,将其传递到下一个Activity:
/**
* Saves a JPEG {@link Image} into the specified {@link File}.
*/
private static class ImageSaver implements Runnable {
/**
* The JPEG image
*/
private final Image mImage;
/**
* The file we save the image into.
*/
private final File mFile;
ImageSaver(Image image, File file) {
mImage = image;
mFile = file;
}
@Override
public void run() {
ByteBuffer buffer = mImage.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
FileOutputStream output = null;
try {
output = new FileOutputStream(mFile);
output.write(bytes);
Intent i = new Intent(current activity, next activity)
startActivity(i);
} catch (IOException e) {
e.printStackTrace();
} finally {
mImage.close();
if (null != output) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
这就是我想将活动调用传递给下一个活动的地方(在camera2Basic代码中)。这里面临的问题是,这个类中没有任何上下文变量或主活动的实例,并且由于封闭方法是静态的,我无法启动活动/传递意图。
我已经用我正在使用的代码对其进行了更新,但我正在寻找如何在使用camera2 API时在活动之间进行转换。因为在摄像头api中,这很容易。问题是run()函数在UI线程上运行,初始化ImageReader时调用该线程。整个代码就是Camera2基本代码。我尝试添加的唯一内容是在活动之间传输,并将捕获的图像发送到新活动。
如果我能知道如何进行,那就太好了。
非常感谢。