解决方案 »

  1.   

    在最后加个
    camera.setParameters(params);
    只有调用了这个函数 camera才会真正修改参数
      

  2.   

    这是我最近写得部分代码,分享给楼主!总之如楼上所说
    camera.setParameters(params);
    只有调用了这个函数 camera才会真正修改参数
     
    @Override
    public void surfaceCreated(SurfaceHolder holder) {
    if (camera != null) {
    camera.release();// 相机释放
    }
    camera = Camera.open();// 打开相机
    camera.setDisplayOrientation(90);// 旋转镜头 parameters = camera.getParameters();// 获取相机参数集
    if (parameters.getFlashMode() == null) {
    flash.setImageResource(flashImg[FLASH_OFF]);
    Toast.makeText(PhotographActivity.this, "无闪光灯",
    Toast.LENGTH_SHORT).show();
    } else {
    parameters.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
    List<Size> SupportedPreviewSizes = parameters
    .getSupportedPreviewSizes();// 获取支持预览照片的尺寸
    Size previewSize = SupportedPreviewSizes.get(0);// 从List取出Size
    parameters
    .setPreviewSize(previewSize.width, previewSize.height);// 设置预览照片的大小
    List<Size> supportedPictureSizes = parameters
    .getSupportedPictureSizes();// 获取支持保存图片的尺寸
    Size pictureSize = supportedPictureSizes.get(0);// 从List取出Size
    parameters
    .setPictureSize(pictureSize.width, pictureSize.height);// 设置照片的大小
    camera.setParameters(parameters);
    }
    maxZoom = parameters.getMaxZoom();// 获取最大像素
    zoomSet.setMax(maxZoom);// 设置最大像素
    try {
    camera.setPreviewDisplay(cameraBG.getHolder());// 设置相机预览
    } catch (IOException e) {
    e.printStackTrace();
    }
    camera.startPreview();// 开始预览
    preview = true; }
      

  3.   

    嗯,真的是这样,我开始不知道听谁说的好像后面的版本不用写这个,现在加上去就好了,顺便问下,你这个镜头旋转了90度之后设置宽高不需要调一下顺序吗?我设的都是(高,宽)才能使照的相变正常。
    还有获取尺寸为什么要取第一个啊?我打log发现后面的大一点,我想取个最合适的大小的怎么取啊?
    还有一个问题就是我的预览都是正常的,屏幕固定式竖直的,但是我每次照的相片都是一个横着的相片,这个怎么能弄正啊?
    求兄弟赐教
      

  4.   

    1、取合适的大小可以parameters.setPreviewSize(宽,高);前面代码里有
    2、可以拍出来后自己用Matrix操作获得的bitmap,旋转90度。
    例如Bitmap.createBitmap(source, x, y, width, height, m, filter)