Android 我能';不要用安卓相机拍摄高质量的照片
我通过低质量或有时中等质量的相机拍照,相机返回正确的Android 我能';不要用安卓相机拍摄高质量的照片,android,camera,Android,Camera,我通过低质量或有时中等质量的相机拍照,相机返回正确的uri并将照片发送到我的应用程序 当我在三星手机和HTC手机中设置高质量相机时,会出现错误nullpointerexception:uri(或在其他手机中使我的应用程序崩溃),但在低质量手机中效果很好 我的代码: imCamera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ContentValue
uri
并将照片发送到我的应用程序
当我在三星手机和HTC手机中设置高质量相机时,会出现错误nullpointerexception:uri
(或在其他手机中使我的应用程序崩溃),但在低质量手机中效果很好
我的代码:
imCamera.setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "New Picture");
values.put(MediaStore.Images.Media.DESCRIPTION, "From your Camera");
imageUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, 100);
}
show.dismiss();
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
...
try {
Bitmap thumbnail = MediaStore.Images.Media.getBitmap(
getContentResolver(), imageUri);
String photoPath = getRealPathFromURI(imageUri);
ExifInterface ei = new ExifInterface(photoPath);
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_UNDEFINED);
Bitmap rotatedBitmap = null;
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
rotatedBitmap = rotateImage(thumbnail, 90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotatedBitmap = rotateImage(thumbnail, 180);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotatedBitmap = rotateImage(thumbnail, 270);
break;
case ExifInterface.ORIENTATION_NORMAL:
default:
rotatedBitmap = thumbnail;
}
if (rotatedBitmap != null) {
ivImage.setImageBitmap(rotatedBitmap);
File tempFile = GetTempFile(rotatedBitmap);
if (tempFile != null)
crImage = tempFile;
}
} catch (Exception e) {
e.printStackTrace();
}
更新:
我在android上测试了它:4,5,6,7但当质量很高时,它仍然给我错误 更新:
可能是因为我在主线程中执行此操作?如何选择高质量?通常,相机应用程序仅使用默认尺寸进行拍摄。