设置相机拍摄图像的分辨率

时间:2012-08-23 14:13:41

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

在我的应用程序中,我通过内置的相机活动拍摄图像并将其存储在SD卡中。我正在使用intent.putextras来获得高分辨率的图像。

第一个设备 - 代码成功运行,我得到的分辨率为640X480。

第二个设备 - 当内置摄像头活动要求保存捕获的图像时,强制关闭。但是,当我明确地将设备的相机分辨率更改为640X480并重新运行应用程序时,它可以正常工作。

问题: -

  1. 克服这种情况的方法??
  2. 这可能是与Android版相关的问题。两个设备的Android版本不同。
  3. 这是一种将分辨率参数(640,480)传递给内置摄像头活动的方法吗?或者自制相机活动是必要的??
  4. 这是代码

    public void onClick(View v) {
        // TODO Auto-generated method stub
    
        if(v.getId()!=1000){
            imageFile = "bmp"+v.getId()+".png";
    
            File f = new File (folder,imageFile);
             imageUri = Uri.fromFile(f);
            Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageUri);
            startActivityForResult(i,CAMERA_PIC_REQUEST);   
        }
        if(v.getId()==1000){
            Intent openFinalShow = new Intent("com.integrated.mpr.FINALSHOW");
            startActivity(openFinalShow);
            finish();
        }
    
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
    
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK){
                return;
        }
    }
    

2 个答案:

答案 0 :(得分:1)

我认为不可能将目的地的分辨率参数传递给照相机。这里存在关于具有不同相机的不同电话的问题,以及用户具有不能识别所述意图附加物的不同默认相机应用的可能性。

您的问题的解决方案是使用您自己的预览和相机设置编写自定义相机活动。然后,您可以正确设置录制的图像/视频的分辨率。以及预览窗口的分辨率和/或大小等。

自定义Android相机示例的camera developer guide和其他搜索将是有用的

答案 1 :(得分:0)

意图允许您指定分辨率或其他您无法实现的目标。 此外,您必须确保在通过Camera.Parameters对象设置图片大小时,您只能使用Camera.getSupportedPitureSizes给出的值。