Изменить настройки камеры из активности другого приложения - PullRequest
0 голосов
/ 07 сентября 2011

У меня есть приложение для Android, которое вызывает собственное приложение камеры, чтобы сделать снимок, и возвращает изображение для дальнейшей манипуляции.Моя проблема в том, что я сталкиваюсь с утечками памяти, если камера установлена ​​на 2 (+) мегапикселя.В идеале, я хочу, чтобы он был установлен на самое низкое значение (VGA), поскольку качество изображения не имеет значения для этого приложения.

Есть ли способ из моего приложения изменить настройки приложения камеры собственного устройства?Вот код, который я использую:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            mImageCaptureUri = 
            Uri.fromFile(new file(Environment.getExternalStorageDirectory(),
            "fname_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 08 сентября 2011

К сожалению, нет способа сообщить приложению камеры, в каком разрешении вы хотите сделать снимок.

Но вы можете сами что-то сделать с этим в своем приложении, расширив некоторые функциональные возможности растрового изображения, такие как (2-й вариант будет более подходящим для ваших нужд)Размер выборки должен быть больше 1. Попробуйте 2 и 4.

BitmapFactoryOptions.inSampleSize = sampleSize;

Создание нового растрового изображения с размером, который вам требуется из исходного растрового изображения.

// calculate the change in scale 
float scaleX = ((float) newWidth_that_you_want) / originalBitmap.width();
float scaleY = ((float) newHeight_that_you_want) / originalBitmap.height();

// createa matrix for the manipulation
Matrix matrix = new Matrix();
matrix.postScale(scaleX , scaleY );

Bitmap newBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, width, height, matrix, true);
//since you don't need this bitmap anymore, mark it so that GC can reclaim it.
//note: after recycle you should not use the originalBitmap object anymore.
//if you do then it will result in an exception.
originalBitmap.recycle();
...