1

在我的应用程序中,我通过内置的相机活动拍摄图像并将其存储在 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;
    }
}
4

2 回答 2

1

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

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

相机开发者指南和其他搜索自定义 android 相机示例将很有用

于 2012-08-23T15:44:15.903 回答
0

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

于 2013-07-13T13:43:11.130 回答