我刚刚在Stackoverflow中查看了类似的问题,但还没有找到解决方案。
每当我尝试使用我的Android应用程序拍摄照片时,它会返回分辨率为240x360像素的位图照片,尽管相机大约为800万像素。
那么编程代码中的错误在哪里:(看看这个截图)
private static final int TAKE_PHOTO_CODE = 1;
private static void takePhoto(){
final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getTempFile(thisOne.getBaseContext())) );
thisOne.startActivityForResult(intent, TAKE_PHOTO_CODE);
}
private static File getTempFile(Context context){
//it will return /sdcard/image.tmp
final File path = new File( Environment.getExternalStorageDirectory(), context.getPackageName() );
if(!path.exists()){
path.mkdir();
}
return new File(path, "image.tmp");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch(requestCode){
case TAKE_PHOTO_CODE:
final File file = getTempFile(this);
try {
Bitmap captureBmp = MediaStore.Images.Media.getBitmap(getContentResolver(), Uri.fromFile(file));
int a = captureBmp.getHeight(); // RESULT 240
int b = captureBmp.getWidth(); // RESULT 360
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
}
感谢您的帮助
答案 0 :(得分:0)
使用它。获取支持的大小列表。循环通过它找到最大的分辨率。
Parameters params = camera.getParameters();
List<Size> sizes = params.getSupportedPictureSizes();
Camera.Size size = sizes.get(0);
for(int i=0;i<sizes.size();i++)
{
if(sizes.get(i).width > size.width)
size = sizes.get(i);
}