【问题标题】:Setting resolution of the image taken by a camera设置相机拍摄的图像的分辨率
【发布时间】:2012-08-23 14:13:40
【问题描述】:

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

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

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

问题:-

  1. 克服这个问题的方法??
  2. 这可能是与 android 版本相关的问题。两种设备的安卓版本不同。
  3. 这是一种将分辨率参数(640,480)传递给内置相机活动的方法吗?还是需要自制相机活动??

这里是代码

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;
    }
}

【问题讨论】:

  • 向我们展示一些 LogCat 以实现强制关闭。
  • 由于我没有使用任何USB调试技术,并且模拟器不支持相机活动,我无法获取logcat
  • @RaghavSood 我已经编辑了我的问题,请检查一下。
  • 有些应用可以读取logcat trace

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


【解决方案1】:

我认为不可能将分辨率参数传递给库存相机。这里存在与具有不同摄像头的不同手机有关的问题,以及用户可能拥有不同的默认摄像头应用程序而无法识别所述意图额外内容。

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

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

【讨论】:

    【解决方案2】:

    意图让您指定分辨率,否则您无法实现您想要的。 此外,您必须确保在通过 Camera.Parameters 对象设置图片大小时,您只能使用 Camera.getSupportedPitureSizes 给出的值中的一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      相关资源
      最近更新 更多