从另一个应用程序的活动中更改相机设置

时间:2011-09-07 03:58:17

标签: android camera android-intent mediastore android-camera-intent

我有一个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 :(得分:0)

不幸的是,没有办法告诉相机应用程序你想要拍摄的照片分辨率。

但是你可以通过获取一些位图功能(例如第二选项更适合你的需要)在你的应用中自己做些什么。

  • 下采样。样本量应大于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();