Я новичок в Android Development, поэтому извините, если на этот вопрос уже был дан ответ.У меня есть приложение, где я могу отсканировать QR-код, и камера делает снимок и загружает его на сервер.Это все работает нормально, но у меня проблема с телефонами с высоким разрешением, поэтому время ожидания обрывает соединение, и я продолжаю получать сообщение об ошибке.На некоторых телефонах размер 180 КБ, на других - 2,9 МБ.У меня вопрос, как я могу сказать, я хочу фиксированное разрешение, независимо от разрешения на определенном телефоне?У меня есть следующий код:
cameraSource = new CameraSource
.Builder(this, barcodeDetector)
.setRequestedPreviewSize(800, 800)
.setRequestedFps(30.0f)
.setAutoFocusEnabled(true)
.build();
@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
final SparseArray<Barcode> qrcodes = detections.getDetectedItems();
if (qrcodes.size() != 0 && !qrfound)
{
cameraSource.takePicture(null, jpegCallback);
qrfound = true;
codeInfo.post(new Runnable() {
@Override
public void run() {
//Create vibrate
Vibrator vibrator = (Vibrator)getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(500);
codeInfo.setText(qrcodes.valueAt(0).displayValue);
hash = qrcodes.valueAt(0).displayValue;
}
});
}
}
Изображение преобразуется в строку, используя base64:
jpegCallback = new CameraSource.PictureCallback() {
@Override
public void onPictureTaken(byte[] bytes) {
scannedImage = Base64.encodeToString(bytes, Base64.DEFAULT);
uploadScannedImage();
}
};
В приведенном выше коде я хотел бы что-то, что сжимает размер изображения, ноя не уверен, как я могу это сделать.Я видел похожий пост ( Установите разрешение камеры с помощью Google Vision android ), ответ кажется правдоподобным, но я хочу установить разрешение самостоятельно, чтобы размер оставался минимальным (возможно, до 1 МБ).Может кто-нибудь помочь мне?