Я думаю, что самым простым подходом будет захват изображений предварительного просмотра и их отправка.
Вот хороший фрагмент кода, который я нашел для захвата изображения предварительного просмотра в формате JPEG.Это красиво и быстро и должно соответствовать вашим потребностям.Я также использовал его для загрузки, так что мне нужен был очень маленький размер файла.
При выводе изображений 1920x1080 размер файла был где-то между 150-300 КБ.
camera.setOneShotPreviewCallback(new PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
try {
Camera.Parameters parameters = camera.getParameters();
Size size = parameters.getPreviewSize();
YuvImage image = new YuvImage(data, parameters.getPreviewFormat(),
size.width, size.height, null);
File file = new File(getCacheDir().getPath() + "/out.jpg");
FileOutputStream filecon = new FileOutputStream(file);
image.compressToJpeg(
new Rect(0, 0, image.getWidth(), image.getHeight()), 90,
filecon);
} catch (FileNotFoundException e) {
}
}
});
Вот как я простоустановите максимальный размер предварительного просмотра, но вы можете установить его на меньший, чтобы ускорить процесс.
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
imageWidth = previewSizes.get(0).width;
imageHeight = previewSizes.get(0).height;
parameters.setPreviewSize(imageWidth, imageHeight);
camera.setParameters(parameters);