Мне нужно просто использовать Camera2 API (используя дизайн кода https://github.com/googlesamples/android-Camera2Basic), чтобы создать приложение. Раньше я использовал API камеры, чтобы сделать то же самое, и результаты были неплохими. Прямо сейчас я могу захватить изображение и сохранить его в файле. Я застрял на этом этапе: Я хочу отправить захваченное изображение другому действию, в котором я хочу отобразить изображение в виде изображения. В отличие от Camera API, Camera2 Api довольно громоздко справляется с этим. Это пример кода, в котором я пытаюсь передать намерение, т.е. сразу после того, как я получаю набор выходных переменных, я хотел бы использовать starActivity, чтобы передать его следующему действию. :
/**
* 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) я хочу передать вызов действия следующему действию. Эта проблема, с которой я сталкиваюсь здесь, заключается в том, что в этом классе нет какой-либо переменной контекста или экземпляра основного действия, и поскольку метод включения является статическим, я не могу запустить действие/передать намерение.
я обновил его кодом, который я использую, но я ищу, как я могу переключаться между действиями, когда я использую API camera2. вызвать в камере API, это легко. проблема заключается в том, что функция run() запускается в потоке пользовательского интерфейса, который inturn вызывается при инициализации ImageReader. Весь код — это просто код Camera2Basic. единственное, что я пытаюсь добавить, это перенос между действиями и отправка изображения, снятого в новое действие.
Было бы здорово, если бы я мог понять, как действовать дальше. Благодарю вас!