Android 为什么照相机活动返回空值?
我使用下面的代码从相机中获取图像,并将其放在图像视图(imgViewAds)中 这里是OnActivityResult,camare发送结果Android 为什么照相机活动返回空值?,android,xamarin,Android,Xamarin,我使用下面的代码从相机中获取图像,并将其放在图像视图(imgViewAds)中 这里是OnActivityResult,camare发送结果 protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) { if (resultCode == Result.Ok && (data != null)) { Bundle extras
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if (resultCode == Result.Ok && (data != null))
{
Bundle extras = data.Extras;
Bitmap imageBitmap = (Bitmap)extras.Get("data");
imgViewAds.SetImageBitmap(imageBitmap);
MemoryStream stream = new MemoryStream();
imageBitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
addAds.AdsImage = stream.ToArray();
}
base.OnActivityResult(requestCode, resultCode, data);
}
但是发送到OnActivityResult的数据为空,图像未进入图像视图。当您传递带有要写入的URI的
额外输出时,相机意图将为null
,并且图片位于您传递的URI中
因此,您可以简单地删除这两行:
Android.Net.Uri imageUri = Android.Net.Uri.FromFile(imageFile);
cameraIntent.PutExtra(MediaStore.ExtraOutput, imageUri);
请注意,通过这种方式可以获得图像的缩略图。因此,如果您想要整个图像,您可以使用类似的东西(我没有测试代码,但您可以得到这个想法):
当您传递带有要写入的URI的EXTRA_OUTPUT
时,相机意图将为null
,图片位于您传递的URI中
因此,您可以简单地删除这两行:
Android.Net.Uri imageUri = Android.Net.Uri.FromFile(imageFile);
cameraIntent.PutExtra(MediaStore.ExtraOutput, imageUri);
请注意,通过这种方式可以获得图像的缩略图。因此,如果您想要整个图像,您可以使用类似的东西(我没有测试代码,但您可以得到这个想法):
if (requestCode == CAMERA_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
addAds.ImageName = Guid.NewGuid().ToString() + ".jpg";
Java.IO.File imageFile = new Java.IO.File(AdsAdapter.ImagePath(addAds.ImageName));
Uri uri = Uri.fromFile(file);
Bitmap bitmap;
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
bitmap = cropAndScale(bitmap, 300); // if you mind scaling
profileImageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}